From 2c046f4d1859a9e246a5abf4094e68f74f6954e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kinn=20Coelho=20Juli=C3=A3o?= Date: Thu, 28 Feb 2013 14:39:59 -0500 Subject: [PATCH] Added composer support + PHPUnit + PHPCS --- .gitignore | 3 + bin/phpunit.phar | 68625 -------------------------------------------- composer.json | 7 + composer.lock | 478 + composer.phar | Bin 0 -> 688022 bytes index.php | 1 + src/bootstrap.php | 17 +- 7 files changed, 490 insertions(+), 68641 deletions(-) create mode 100644 .gitignore delete mode 100755 bin/phpunit.phar create mode 100644 composer.json create mode 100644 composer.lock create mode 100755 composer.phar diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1ddb280 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +vendor +.c9revisions +.swp \ No newline at end of file diff --git a/bin/phpunit.phar b/bin/phpunit.phar deleted file mode 100755 index 5a0a6e5..0000000 --- a/bin/phpunit.phar +++ /dev/null @@ -1,68625 +0,0 @@ -#!/usr/bin/env php - '/DbUnit-1.2.2/Samples/BankAccountDB/BankAccount.php', - 'bankaccountdbtest' => '/DbUnit-1.2.2/Samples/BankAccountDB/BankAccountDBTest.php', - 'bankaccountdbtestmysql' => '/DbUnit-1.2.2/Samples/BankAccountDB/BankAccountDBTestMySQL.php', - 'bankaccountexception' => '/DbUnit-1.2.2/Samples/BankAccountDB/BankAccount.php', - 'file_iterator' => '/File_Iterator-1.3.3/File/Iterator.php', - 'file_iterator_facade' => '/File_Iterator-1.3.3/File/Iterator/Facade.php', - 'file_iterator_factory' => '/File_Iterator-1.3.3/File/Iterator/Factory.php', - 'php_codecoverage' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage.php', - 'php_codecoverage_driver' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Driver.php', - 'php_codecoverage_driver_xdebug' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Driver/Xdebug.php', - 'php_codecoverage_exception' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Exception.php', - 'php_codecoverage_filter' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Filter.php', - 'php_codecoverage_report_clover' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Clover.php', - 'php_codecoverage_report_factory' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Factory.php', - 'php_codecoverage_report_html' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML.php', - 'php_codecoverage_report_html_renderer' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer.php', - 'php_codecoverage_report_html_renderer_dashboard' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Dashboard.php', - 'php_codecoverage_report_html_renderer_directory' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Directory.php', - 'php_codecoverage_report_html_renderer_file' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/File.php', - 'php_codecoverage_report_node' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Node.php', - 'php_codecoverage_report_node_directory' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Node/Directory.php', - 'php_codecoverage_report_node_file' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Node/File.php', - 'php_codecoverage_report_node_iterator' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Node/Iterator.php', - 'php_codecoverage_report_php' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/PHP.php', - 'php_codecoverage_report_text' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Text.php', - 'php_codecoverage_util' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Util.php', - 'php_codecoverage_util_invalidargumenthelper' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Util/InvalidArgumentHelper.php', - 'php_codecoverage_version' => '/PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Version.php', - 'php_invoker' => '/PHP_Invoker-1.1.2/PHP/Invoker.php', - 'php_invoker_timeoutexception' => '/PHP_Invoker-1.1.2/PHP/Invoker/TimeoutException.php', - 'php_timer' => '/PHP_Timer-1.0.4/PHP/Timer.php', - 'php_token' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_abstract' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_ampersand' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_and_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_array' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_array_cast' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_as' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_at' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_backtick' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_bad_character' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_bool_cast' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_boolean_and' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_boolean_or' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_break' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_callable' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_caret' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_case' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_catch' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_character' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_class' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_class_c' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_clone' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_close_bracket' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_close_curly' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_close_square' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_close_tag' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_colon' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_comma' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_comment' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_concat_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_const' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_constant_encapsed_string' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_continue' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_curly_open' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_dec' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_declare' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_default' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_dir' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_div' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_div_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_dnumber' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_do' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_doc_comment' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_dollar' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_dollar_open_curly_braces' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_dot' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_double_arrow' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_double_cast' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_double_colon' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_double_quotes' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_echo' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_else' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_elseif' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_empty' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_encapsed_and_whitespace' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_end_heredoc' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_enddeclare' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_endfor' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_endforeach' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_endif' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_endswitch' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_endwhile' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_eval' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_exclamation_mark' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_exit' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_extends' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_file' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_final' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_for' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_foreach' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_func_c' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_function' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_global' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_goto' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_gt' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_halt_compiler' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_if' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_implements' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_inc' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_include' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_include_once' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_includes' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_inline_html' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_instanceof' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_insteadof' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_int_cast' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_interface' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_is_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_is_greater_or_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_is_identical' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_is_not_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_is_not_identical' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_is_smaller_or_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_isset' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_line' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_list' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_lnumber' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_logical_and' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_logical_or' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_logical_xor' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_lt' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_method_c' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_minus' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_minus_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_mod_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_mul_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_mult' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_namespace' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_new' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_ns_c' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_ns_separator' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_num_string' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_object_cast' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_object_operator' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_open_bracket' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_open_curly' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_open_square' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_open_tag' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_open_tag_with_echo' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_or_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_paamayim_nekudotayim' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_percent' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_pipe' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_plus' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_plus_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_print' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_private' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_protected' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_public' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_question_mark' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_require' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_require_once' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_return' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_semicolon' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_sl' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_sl_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_sr' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_sr_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_start_heredoc' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_static' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_stream' => '/PHP_TokenStream-1.1.5/PHP/Token/Stream.php', - 'php_token_stream_cachingfactory' => '/PHP_TokenStream-1.1.5/PHP/Token/Stream/CachingFactory.php', - 'php_token_string' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_string_cast' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_string_varname' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_switch' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_throw' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_tilde' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_trait' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_trait_c' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_try' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_unset' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_unset_cast' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_use' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_var' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_variable' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_while' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_whitespace' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_token_xor_equal' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_tokenwithscope' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'php_tokenwithscopeandvisibility' => '/PHP_TokenStream-1.1.5/PHP/Token.php', - 'phpunit_extensions_database_abstracttester' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/AbstractTester.php', - 'phpunit_extensions_database_constraint_datasetisequal' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Constraint/DataSetIsEqual.php', - 'phpunit_extensions_database_constraint_tableisequal' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Constraint/TableIsEqual.php', - 'phpunit_extensions_database_constraint_tablerowcount' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Constraint/TableRowCount.php', - 'phpunit_extensions_database_dataset_abstractdataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/AbstractDataSet.php', - 'phpunit_extensions_database_dataset_abstracttable' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/AbstractTable.php', - 'phpunit_extensions_database_dataset_abstracttablemetadata' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/AbstractTableMetaData.php', - 'phpunit_extensions_database_dataset_abstractxmldataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/AbstractXmlDataSet.php', - 'phpunit_extensions_database_dataset_compositedataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/CompositeDataSet.php', - 'phpunit_extensions_database_dataset_csvdataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/CsvDataSet.php', - 'phpunit_extensions_database_dataset_datasetfilter' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DataSetFilter.php', - 'phpunit_extensions_database_dataset_defaultdataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DefaultDataSet.php', - 'phpunit_extensions_database_dataset_defaulttable' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DefaultTable.php', - 'phpunit_extensions_database_dataset_defaulttableiterator' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DefaultTableIterator.php', - 'phpunit_extensions_database_dataset_defaulttablemetadata' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DefaultTableMetaData.php', - 'phpunit_extensions_database_dataset_flatxmldataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/FlatXmlDataSet.php', - 'phpunit_extensions_database_dataset_idataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/IDataSet.php', - 'phpunit_extensions_database_dataset_ipersistable' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/IPersistable.php', - 'phpunit_extensions_database_dataset_ispec' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ISpec.php', - 'phpunit_extensions_database_dataset_itable' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ITable.php', - 'phpunit_extensions_database_dataset_itableiterator' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ITableIterator.php', - 'phpunit_extensions_database_dataset_itablemetadata' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ITableMetaData.php', - 'phpunit_extensions_database_dataset_mysqlxmldataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/MysqlXmlDataSet.php', - 'phpunit_extensions_database_dataset_persistors_abstract' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/Abstract.php', - 'phpunit_extensions_database_dataset_persistors_factory' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/Factory.php', - 'phpunit_extensions_database_dataset_persistors_flatxml' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/FlatXml.php', - 'phpunit_extensions_database_dataset_persistors_mysqlxml' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/MysqlXml.php', - 'phpunit_extensions_database_dataset_persistors_xml' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/Xml.php', - 'phpunit_extensions_database_dataset_persistors_yaml' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/Yaml.php', - 'phpunit_extensions_database_dataset_querydataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/QueryDataSet.php', - 'phpunit_extensions_database_dataset_querytable' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/QueryTable.php', - 'phpunit_extensions_database_dataset_replacementdataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php', - 'phpunit_extensions_database_dataset_replacementtable' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ReplacementTable.php', - 'phpunit_extensions_database_dataset_replacementtableiterator' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ReplacementTableIterator.php', - 'phpunit_extensions_database_dataset_specs_csv' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/Csv.php', - 'phpunit_extensions_database_dataset_specs_dbquery' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/DbQuery.php', - 'phpunit_extensions_database_dataset_specs_dbtable' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/DbTable.php', - 'phpunit_extensions_database_dataset_specs_factory' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/Factory.php', - 'phpunit_extensions_database_dataset_specs_flatxml' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/FlatXml.php', - 'phpunit_extensions_database_dataset_specs_ifactory' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/IFactory.php', - 'phpunit_extensions_database_dataset_specs_xml' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/Xml.php', - 'phpunit_extensions_database_dataset_specs_yaml' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/Yaml.php', - 'phpunit_extensions_database_dataset_tablefilter' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/TableFilter.php', - 'phpunit_extensions_database_dataset_tablemetadatafilter' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/TableMetaDataFilter.php', - 'phpunit_extensions_database_dataset_xmldataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/XmlDataSet.php', - 'phpunit_extensions_database_dataset_yamldataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/YamlDataSet.php', - 'phpunit_extensions_database_db_dataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/DataSet.php', - 'phpunit_extensions_database_db_defaultdatabaseconnection' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/DefaultDatabaseConnection.php', - 'phpunit_extensions_database_db_filtereddataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/FilteredDataSet.php', - 'phpunit_extensions_database_db_idatabaseconnection' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/IDatabaseConnection.php', - 'phpunit_extensions_database_db_imetadata' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/IMetaData.php', - 'phpunit_extensions_database_db_metadata' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData.php', - 'phpunit_extensions_database_db_metadata_informationschema' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/InformationSchema.php', - 'phpunit_extensions_database_db_metadata_mysql' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/MySQL.php', - 'phpunit_extensions_database_db_metadata_oci' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/Oci.php', - 'phpunit_extensions_database_db_metadata_pgsql' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/PgSQL.php', - 'phpunit_extensions_database_db_metadata_sqlite' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/Sqlite.php', - 'phpunit_extensions_database_db_metadata_sqlsrv' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/SqlSrv.php', - 'phpunit_extensions_database_db_resultsettable' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/ResultSetTable.php', - 'phpunit_extensions_database_db_table' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/Table.php', - 'phpunit_extensions_database_db_tableiterator' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/TableIterator.php', - 'phpunit_extensions_database_db_tablemetadata' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/TableMetaData.php', - 'phpunit_extensions_database_defaulttester' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/DefaultTester.php', - 'phpunit_extensions_database_exception' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Exception.php', - 'phpunit_extensions_database_idatabaselistconsumer' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/IDatabaseListConsumer.php', - 'phpunit_extensions_database_itester' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/ITester.php', - 'phpunit_extensions_database_operation_composite' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Composite.php', - 'phpunit_extensions_database_operation_delete' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Delete.php', - 'phpunit_extensions_database_operation_deleteall' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/DeleteAll.php', - 'phpunit_extensions_database_operation_exception' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Exception.php', - 'phpunit_extensions_database_operation_factory' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Factory.php', - 'phpunit_extensions_database_operation_idatabaseoperation' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/IDatabaseOperation.php', - 'phpunit_extensions_database_operation_insert' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Insert.php', - 'phpunit_extensions_database_operation_null' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Null.php', - 'phpunit_extensions_database_operation_replace' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Replace.php', - 'phpunit_extensions_database_operation_rowbased' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/RowBased.php', - 'phpunit_extensions_database_operation_truncate' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Truncate.php', - 'phpunit_extensions_database_operation_update' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Update.php', - 'phpunit_extensions_database_testcase' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/TestCase.php', - 'phpunit_extensions_database_ui_command' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Command.php', - 'phpunit_extensions_database_ui_context' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Context.php', - 'phpunit_extensions_database_ui_imedium' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/IMedium.php', - 'phpunit_extensions_database_ui_imediumprinter' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/IMediumPrinter.php', - 'phpunit_extensions_database_ui_imode' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/IMode.php', - 'phpunit_extensions_database_ui_imodefactory' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/IModeFactory.php', - 'phpunit_extensions_database_ui_invalidmodeexception' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/InvalidModeException.php', - 'phpunit_extensions_database_ui_mediums_text' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Mediums/Text.php', - 'phpunit_extensions_database_ui_modefactory' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/ModeFactory.php', - 'phpunit_extensions_database_ui_modes_exportdataset' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet.php', - 'phpunit_extensions_database_ui_modes_exportdataset_arguments' => '/DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet/Arguments.php', - 'phpunit_extensions_grouptestsuite' => '/PHPUnit/Extensions/GroupTestSuite.php', - 'phpunit_extensions_phpttestcase' => '/PHPUnit/Extensions/PhptTestCase.php', - 'phpunit_extensions_phpttestcase_logger' => '/PHPUnit/Extensions/PhptTestCase/Logger.php', - 'phpunit_extensions_phpttestsuite' => '/PHPUnit/Extensions/PhptTestSuite.php', - 'phpunit_extensions_repeatedtest' => '/PHPUnit/Extensions/RepeatedTest.php', - 'phpunit_extensions_selenium2testcase' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase.php', - 'phpunit_extensions_selenium2testcase_command' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Command.php', - 'phpunit_extensions_selenium2testcase_commandsholder' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/CommandsHolder.php', - 'phpunit_extensions_selenium2testcase_driver' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Driver.php', - 'phpunit_extensions_selenium2testcase_element' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Element.php', - 'phpunit_extensions_selenium2testcase_element_select' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Element/Select.php', - 'phpunit_extensions_selenium2testcase_elementcommand_attribute' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Attribute.php', - 'phpunit_extensions_selenium2testcase_elementcommand_click' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Click.php', - 'phpunit_extensions_selenium2testcase_elementcommand_css' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Css.php', - 'phpunit_extensions_selenium2testcase_elementcommand_equals' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Equals.php', - 'phpunit_extensions_selenium2testcase_elementcommand_genericaccessor' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/GenericAccessor.php', - 'phpunit_extensions_selenium2testcase_elementcommand_genericpost' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/GenericPost.php', - 'phpunit_extensions_selenium2testcase_elementcommand_value' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Value.php', - 'phpunit_extensions_selenium2testcase_elementcriteria' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCriteria.php', - 'phpunit_extensions_selenium2testcase_exception' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Exception.php', - 'phpunit_extensions_selenium2testcase_keysholder' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/KeysHolder.php', - 'phpunit_extensions_selenium2testcase_noseleniumexception' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/NoSeleniumException.php', - 'phpunit_extensions_selenium2testcase_response' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Response.php', - 'phpunit_extensions_selenium2testcase_screenshotlistener' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ScreenshotListener.php', - 'phpunit_extensions_selenium2testcase_session' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session.php', - 'phpunit_extensions_selenium2testcase_session_cookie' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session/Cookie.php', - 'phpunit_extensions_selenium2testcase_session_cookie_builder' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session/Cookie/Builder.php', - 'phpunit_extensions_selenium2testcase_session_storage' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session/Storage.php', - 'phpunit_extensions_selenium2testcase_session_timeouts' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session/Timeouts.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_acceptalert' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/AcceptAlert.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_alerttext' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/AlertText.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_dismissalert' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/DismissAlert.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_frame' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Frame.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_genericaccessor' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/GenericAccessor.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_genericattribute' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/GenericAttribute.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_keys' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Keys.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_location' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Location.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_moveto' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/MoveTo.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_orientation' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Orientation.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_url' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Url.php', - 'phpunit_extensions_selenium2testcase_sessioncommand_window' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Window.php', - 'phpunit_extensions_selenium2testcase_sessionstrategy' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionStrategy.php', - 'phpunit_extensions_selenium2testcase_sessionstrategy_isolated' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionStrategy/Isolated.php', - 'phpunit_extensions_selenium2testcase_sessionstrategy_shared' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionStrategy/Shared.php', - 'phpunit_extensions_selenium2testcase_statecommand' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/StateCommand.php', - 'phpunit_extensions_selenium2testcase_url' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/URL.php', - 'phpunit_extensions_selenium2testcase_waituntil' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/WaitUntil.php', - 'phpunit_extensions_selenium2testcase_webdriverexception' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/WebDriverException.php', - 'phpunit_extensions_selenium2testcase_window' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Window.php', - 'phpunit_extensions_seleniumbrowsersuite' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/SeleniumBrowserSuite.php', - 'phpunit_extensions_seleniumcommon_remotecoverage' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/SeleniumCommon/RemoteCoverage.php', - 'phpunit_extensions_seleniumtestcase' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/SeleniumTestCase.php', - 'phpunit_extensions_seleniumtestcase_driver' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/SeleniumTestCase/Driver.php', - 'phpunit_extensions_seleniumtestsuite' => '/PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/SeleniumTestSuite.php', - 'phpunit_extensions_testdecorator' => '/PHPUnit/Extensions/TestDecorator.php', - 'phpunit_extensions_ticketlistener' => '/PHPUnit/Extensions/TicketListener.php', - 'phpunit_framework_assert' => '/PHPUnit/Framework/Assert.php', - 'phpunit_framework_assertionfailederror' => '/PHPUnit/Framework/AssertionFailedError.php', - 'phpunit_framework_comparator' => '/PHPUnit/Framework/Comparator.php', - 'phpunit_framework_comparator_array' => '/PHPUnit/Framework/Comparator/Array.php', - 'phpunit_framework_comparator_domdocument' => '/PHPUnit/Framework/Comparator/DOMDocument.php', - 'phpunit_framework_comparator_double' => '/PHPUnit/Framework/Comparator/Double.php', - 'phpunit_framework_comparator_exception' => '/PHPUnit/Framework/Comparator/Exception.php', - 'phpunit_framework_comparator_mockobject' => '/PHPUnit/Framework/Comparator/MockObject.php', - 'phpunit_framework_comparator_numeric' => '/PHPUnit/Framework/Comparator/Numeric.php', - 'phpunit_framework_comparator_object' => '/PHPUnit/Framework/Comparator/Object.php', - 'phpunit_framework_comparator_resource' => '/PHPUnit/Framework/Comparator/Resource.php', - 'phpunit_framework_comparator_scalar' => '/PHPUnit/Framework/Comparator/Scalar.php', - 'phpunit_framework_comparator_splobjectstorage' => '/PHPUnit/Framework/Comparator/SplObjectStorage.php', - 'phpunit_framework_comparator_type' => '/PHPUnit/Framework/Comparator/Type.php', - 'phpunit_framework_comparatorfactory' => '/PHPUnit/Framework/ComparatorFactory.php', - 'phpunit_framework_comparisonfailure' => '/PHPUnit/Framework/ComparisonFailure.php', - 'phpunit_framework_constraint' => '/PHPUnit/Framework/Constraint.php', - 'phpunit_framework_constraint_and' => '/PHPUnit/Framework/Constraint/And.php', - 'phpunit_framework_constraint_arrayhaskey' => '/PHPUnit/Framework/Constraint/ArrayHasKey.php', - 'phpunit_framework_constraint_attribute' => '/PHPUnit/Framework/Constraint/Attribute.php', - 'phpunit_framework_constraint_callback' => '/PHPUnit/Framework/Constraint/Callback.php', - 'phpunit_framework_constraint_classhasattribute' => '/PHPUnit/Framework/Constraint/ClassHasAttribute.php', - 'phpunit_framework_constraint_classhasstaticattribute' => '/PHPUnit/Framework/Constraint/ClassHasStaticAttribute.php', - 'phpunit_framework_constraint_composite' => '/PHPUnit/Framework/Constraint/Composite.php', - 'phpunit_framework_constraint_count' => '/PHPUnit/Framework/Constraint/Count.php', - 'phpunit_framework_constraint_exception' => '/PHPUnit/Framework/Constraint/Exception.php', - 'phpunit_framework_constraint_exceptioncode' => '/PHPUnit/Framework/Constraint/ExceptionCode.php', - 'phpunit_framework_constraint_exceptionmessage' => '/PHPUnit/Framework/Constraint/ExceptionMessage.php', - 'phpunit_framework_constraint_fileexists' => '/PHPUnit/Framework/Constraint/FileExists.php', - 'phpunit_framework_constraint_greaterthan' => '/PHPUnit/Framework/Constraint/GreaterThan.php', - 'phpunit_framework_constraint_isanything' => '/PHPUnit/Framework/Constraint/IsAnything.php', - 'phpunit_framework_constraint_isempty' => '/PHPUnit/Framework/Constraint/IsEmpty.php', - 'phpunit_framework_constraint_isequal' => '/PHPUnit/Framework/Constraint/IsEqual.php', - 'phpunit_framework_constraint_isfalse' => '/PHPUnit/Framework/Constraint/IsFalse.php', - 'phpunit_framework_constraint_isidentical' => '/PHPUnit/Framework/Constraint/IsIdentical.php', - 'phpunit_framework_constraint_isinstanceof' => '/PHPUnit/Framework/Constraint/IsInstanceOf.php', - 'phpunit_framework_constraint_isnull' => '/PHPUnit/Framework/Constraint/IsNull.php', - 'phpunit_framework_constraint_istrue' => '/PHPUnit/Framework/Constraint/IsTrue.php', - 'phpunit_framework_constraint_istype' => '/PHPUnit/Framework/Constraint/IsType.php', - 'phpunit_framework_constraint_jsonmatches' => '/PHPUnit/Framework/Constraint/JsonMatches.php', - 'phpunit_framework_constraint_jsonmatches_errormessageprovider' => '/PHPUnit/Framework/Constraint/JsonMatches/ErrorMessageProvider.php', - 'phpunit_framework_constraint_lessthan' => '/PHPUnit/Framework/Constraint/LessThan.php', - 'phpunit_framework_constraint_not' => '/PHPUnit/Framework/Constraint/Not.php', - 'phpunit_framework_constraint_objecthasattribute' => '/PHPUnit/Framework/Constraint/ObjectHasAttribute.php', - 'phpunit_framework_constraint_or' => '/PHPUnit/Framework/Constraint/Or.php', - 'phpunit_framework_constraint_pcrematch' => '/PHPUnit/Framework/Constraint/PCREMatch.php', - 'phpunit_framework_constraint_samesize' => '/PHPUnit/Framework/Constraint/SameSize.php', - 'phpunit_framework_constraint_stringcontains' => '/PHPUnit/Framework/Constraint/StringContains.php', - 'phpunit_framework_constraint_stringendswith' => '/PHPUnit/Framework/Constraint/StringEndsWith.php', - 'phpunit_framework_constraint_stringmatches' => '/PHPUnit/Framework/Constraint/StringMatches.php', - 'phpunit_framework_constraint_stringstartswith' => '/PHPUnit/Framework/Constraint/StringStartsWith.php', - 'phpunit_framework_constraint_traversablecontains' => '/PHPUnit/Framework/Constraint/TraversableContains.php', - 'phpunit_framework_constraint_traversablecontainsonly' => '/PHPUnit/Framework/Constraint/TraversableContainsOnly.php', - 'phpunit_framework_constraint_xor' => '/PHPUnit/Framework/Constraint/Xor.php', - 'phpunit_framework_error' => '/PHPUnit/Framework/Error.php', - 'phpunit_framework_error_deprecated' => '/PHPUnit/Framework/Error/Deprecated.php', - 'phpunit_framework_error_notice' => '/PHPUnit/Framework/Error/Notice.php', - 'phpunit_framework_error_warning' => '/PHPUnit/Framework/Error/Warning.php', - 'phpunit_framework_exception' => '/PHPUnit/Framework/Exception.php', - 'phpunit_framework_expectationfailedexception' => '/PHPUnit/Framework/ExpectationFailedException.php', - 'phpunit_framework_incompletetest' => '/PHPUnit/Framework/IncompleteTest.php', - 'phpunit_framework_incompletetesterror' => '/PHPUnit/Framework/IncompleteTestError.php', - 'phpunit_framework_mockobject_builder_identity' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/Identity.php', - 'phpunit_framework_mockobject_builder_invocationmocker' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/InvocationMocker.php', - 'phpunit_framework_mockobject_builder_match' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/Match.php', - 'phpunit_framework_mockobject_builder_methodnamematch' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/MethodNameMatch.php', - 'phpunit_framework_mockobject_builder_namespace' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/Namespace.php', - 'phpunit_framework_mockobject_builder_parametersmatch' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/ParametersMatch.php', - 'phpunit_framework_mockobject_builder_stub' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/Stub.php', - 'phpunit_framework_mockobject_generator' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Generator.php', - 'phpunit_framework_mockobject_invocation' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Invocation.php', - 'phpunit_framework_mockobject_invocation_object' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Invocation/Object.php', - 'phpunit_framework_mockobject_invocation_static' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Invocation/Static.php', - 'phpunit_framework_mockobject_invocationmocker' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/InvocationMocker.php', - 'phpunit_framework_mockobject_invokable' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Invokable.php', - 'phpunit_framework_mockobject_matcher' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher.php', - 'phpunit_framework_mockobject_matcher_anyinvokedcount' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/AnyInvokedCount.php', - 'phpunit_framework_mockobject_matcher_anyparameters' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/AnyParameters.php', - 'phpunit_framework_mockobject_matcher_invocation' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/Invocation.php', - 'phpunit_framework_mockobject_matcher_invokedatindex' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/InvokedAtIndex.php', - 'phpunit_framework_mockobject_matcher_invokedatleastonce' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', - 'phpunit_framework_mockobject_matcher_invokedcount' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/InvokedCount.php', - 'phpunit_framework_mockobject_matcher_invokedrecorder' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/InvokedRecorder.php', - 'phpunit_framework_mockobject_matcher_methodname' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/MethodName.php', - 'phpunit_framework_mockobject_matcher_parameters' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/Parameters.php', - 'phpunit_framework_mockobject_matcher_statelessinvocation' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/StatelessInvocation.php', - 'phpunit_framework_mockobject_mockbuilder' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/MockBuilder.php', - 'phpunit_framework_mockobject_mockobject' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/MockObject.php', - 'phpunit_framework_mockobject_stub' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub.php', - 'phpunit_framework_mockobject_stub_consecutivecalls' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ConsecutiveCalls.php', - 'phpunit_framework_mockobject_stub_exception' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/Exception.php', - 'phpunit_framework_mockobject_stub_matchercollection' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/MatcherCollection.php', - 'phpunit_framework_mockobject_stub_return' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/Return.php', - 'phpunit_framework_mockobject_stub_returnargument' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ReturnArgument.php', - 'phpunit_framework_mockobject_stub_returncallback' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ReturnCallback.php', - 'phpunit_framework_mockobject_stub_returnself' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ReturnSelf.php', - 'phpunit_framework_mockobject_stub_returnvaluemap' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ReturnValueMap.php', - 'phpunit_framework_mockobject_verifiable' => '/PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Verifiable.php', - 'phpunit_framework_outputerror' => '/PHPUnit/Framework/OutputError.php', - 'phpunit_framework_selfdescribing' => '/PHPUnit/Framework/SelfDescribing.php', - 'phpunit_framework_skippedtest' => '/PHPUnit/Framework/SkippedTest.php', - 'phpunit_framework_skippedtesterror' => '/PHPUnit/Framework/SkippedTestError.php', - 'phpunit_framework_skippedtestsuiteerror' => '/PHPUnit/Framework/SkippedTestSuiteError.php', - 'phpunit_framework_syntheticerror' => '/PHPUnit/Framework/SyntheticError.php', - 'phpunit_framework_test' => '/PHPUnit/Framework/Test.php', - 'phpunit_framework_testcase' => '/PHPUnit/Framework/TestCase.php', - 'phpunit_framework_testfailure' => '/PHPUnit/Framework/TestFailure.php', - 'phpunit_framework_testlistener' => '/PHPUnit/Framework/TestListener.php', - 'phpunit_framework_testresult' => '/PHPUnit/Framework/TestResult.php', - 'phpunit_framework_testsuite' => '/PHPUnit/Framework/TestSuite.php', - 'phpunit_framework_testsuite_dataprovider' => '/PHPUnit/Framework/TestSuite/DataProvider.php', - 'phpunit_framework_warning' => '/PHPUnit/Framework/Warning.php', - 'phpunit_runner_basetestrunner' => '/PHPUnit/Runner/BaseTestRunner.php', - 'phpunit_runner_standardtestsuiteloader' => '/PHPUnit/Runner/StandardTestSuiteLoader.php', - 'phpunit_runner_testsuiteloader' => '/PHPUnit/Runner/TestSuiteLoader.php', - 'phpunit_runner_version' => '/PHPUnit/Runner/Version.php', - 'phpunit_textui_command' => '/PHPUnit/TextUI/Command.php', - 'phpunit_textui_resultprinter' => '/PHPUnit/TextUI/ResultPrinter.php', - 'phpunit_textui_testrunner' => '/PHPUnit/TextUI/TestRunner.php', - 'phpunit_util_class' => '/PHPUnit/Util/Class.php', - 'phpunit_util_configuration' => '/PHPUnit/Util/Configuration.php', - 'phpunit_util_deprecatedfeature' => '/PHPUnit/Util/DeprecatedFeature.php', - 'phpunit_util_deprecatedfeature_logger' => '/PHPUnit/Util/DeprecatedFeature/Logger.php', - 'phpunit_util_diff' => '/PHPUnit/Util/Diff.php', - 'phpunit_util_errorhandler' => '/PHPUnit/Util/ErrorHandler.php', - 'phpunit_util_fileloader' => '/PHPUnit/Util/Fileloader.php', - 'phpunit_util_filesystem' => '/PHPUnit/Util/Filesystem.php', - 'phpunit_util_filter' => '/PHPUnit/Util/Filter.php', - 'phpunit_util_getopt' => '/PHPUnit/Util/Getopt.php', - 'phpunit_util_globalstate' => '/PHPUnit/Util/GlobalState.php', - 'phpunit_util_invalidargumenthelper' => '/PHPUnit/Util/InvalidArgumentHelper.php', - 'phpunit_util_log_json' => '/PHPUnit/Util/Log/JSON.php', - 'phpunit_util_log_junit' => '/PHPUnit/Util/Log/JUnit.php', - 'phpunit_util_log_tap' => '/PHPUnit/Util/Log/TAP.php', - 'phpunit_util_php' => '/PHPUnit/Util/PHP.php', - 'phpunit_util_php_default' => '/PHPUnit/Util/PHP/Default.php', - 'phpunit_util_php_windows' => '/PHPUnit/Util/PHP/Windows.php', - 'phpunit_util_printer' => '/PHPUnit/Util/Printer.php', - 'phpunit_util_string' => '/PHPUnit/Util/String.php', - 'phpunit_util_test' => '/PHPUnit/Util/Test.php', - 'phpunit_util_testdox_nameprettifier' => '/PHPUnit/Util/TestDox/NamePrettifier.php', - 'phpunit_util_testdox_resultprinter' => '/PHPUnit/Util/TestDox/ResultPrinter.php', - 'phpunit_util_testdox_resultprinter_html' => '/PHPUnit/Util/TestDox/ResultPrinter/HTML.php', - 'phpunit_util_testdox_resultprinter_text' => '/PHPUnit/Util/TestDox/ResultPrinter/Text.php', - 'phpunit_util_testsuiteiterator' => '/PHPUnit/Util/TestSuiteIterator.php', - 'phpunit_util_type' => '/PHPUnit/Util/Type.php', - 'phpunit_util_xml' => '/PHPUnit/Util/XML.php', - 'symfony\\component\\yaml\\dumper' => '/Yaml-2.1.2/Symfony/Component/Yaml/Dumper.php', - 'symfony\\component\\yaml\\escaper' => '/Yaml-2.1.2/Symfony/Component/Yaml/Escaper.php', - 'symfony\\component\\yaml\\exception\\dumpexception' => '/Yaml-2.1.2/Symfony/Component/Yaml/Exception/DumpException.php', - 'symfony\\component\\yaml\\exception\\exceptioninterface' => '/Yaml-2.1.2/Symfony/Component/Yaml/Exception/ExceptionInterface.php', - 'symfony\\component\\yaml\\exception\\parseexception' => '/Yaml-2.1.2/Symfony/Component/Yaml/Exception/ParseException.php', - 'symfony\\component\\yaml\\inline' => '/Yaml-2.1.2/Symfony/Component/Yaml/Inline.php', - 'symfony\\component\\yaml\\parser' => '/Yaml-2.1.2/Symfony/Component/Yaml/Parser.php', - 'symfony\\component\\yaml\\tests\\a' => '/Yaml-2.1.2/Symfony/Component/Yaml/Tests/DumperTest.php', - 'symfony\\component\\yaml\\tests\\b' => '/Yaml-2.1.2/Symfony/Component/Yaml/Tests/ParserTest.php', - 'symfony\\component\\yaml\\tests\\dumpertest' => '/Yaml-2.1.2/Symfony/Component/Yaml/Tests/DumperTest.php', - 'symfony\\component\\yaml\\tests\\inlinetest' => '/Yaml-2.1.2/Symfony/Component/Yaml/Tests/InlineTest.php', - 'symfony\\component\\yaml\\tests\\parsertest' => '/Yaml-2.1.2/Symfony/Component/Yaml/Tests/ParserTest.php', - 'symfony\\component\\yaml\\tests\\yamltest' => '/Yaml-2.1.2/Symfony/Component/Yaml/Tests/YamlTest.php', - 'symfony\\component\\yaml\\unescaper' => '/Yaml-2.1.2/Symfony/Component/Yaml/Unescaper.php', - 'symfony\\component\\yaml\\yaml' => '/Yaml-2.1.2/Symfony/Component/Yaml/Yaml.php', - 'text_template' => '/Text_Template-1.1.4/Text/Template.php' - ); - } - - $class = strtolower($class); - - if (isset($classes[$class])) { - require 'phar://phpunit-3.7.14.phar' . $classes[$class]; - } - } -); - -Phar::mapPhar('phpunit-3.7.14.phar'); -PHPUnit_TextUI_Command::main(); - -__HALT_COMPILER(); ?> -phpunit-3.7.14.phar+PHP_CodeCoverage-1.2.8/PHP/CodeCoverage.php)YmQ)Yب̕FPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Util/InvalidArgumentHelper.phpW mQW Y)9PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Driver/Xdebug.php mQ ei0PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Util.php&mQ&9V5PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Exception.php mQ -u:2PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Driver.php -mQ -n 2PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Filter.php~'mQ~'Y>U3PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Version.php; mQ; 7PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Node.php*%mQ*%B<PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Node/File.phpRmQR\-Ƕ@PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Node/Iterator.phpmQuAPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/Node/Directory.php#0mQ#03@PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer.phpG#mQG#.J7/EPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/File.phpQTmQQT0Ͷ\PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/coverage_bar.html.distmQbPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/img/glyphicons-halflings.png1mQ1V(FhPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/img/glyphicons-halflings-white.pngI"mQI"CYPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist;mQ;rSYPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory.html.distVmQVl [PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.cssmQakfPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap-responsive.min.css@mQ@TSPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/css/style.cssqmQq -*^PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist mQ -,[PHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/method_item.html.distXmQX%JTPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/file.html.distmQ`YPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/js/bootstrap.min.jsl{mQl{UPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/js/html5shiv.jsH mQH ߶VPHP_CodeCoverage-1.2.8/PHP/CodeCoverage/Report/HTML/Renderer/Template/js/highcharts.js&mQ&KUPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Generator/mocked_class.tpl.distmQb)UPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Generator/mocked_clone.tpl.distmQaTTPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Generator/trait_class.tpl.dist-mQ-1,CPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Generator.php%imQ%ipp)LPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/MethodName.phpJmQJkTPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/InvokedAtLeastOnce.php7 mQ7 QQPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/InvokedRecorder.phpmQ?dOPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/AnyParameters.php mQ gNPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/InvokedCount.phpzmQz_FQPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/AnyInvokedCount.phpI mQI DHLPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/Parameters.phpmQLPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/Invocation.phpmQanUPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/StatelessInvocation.phpmQtPPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher/InvokedAtIndex.php}mQ}骶EPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/MockBuilder.phpmQqAPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Matcher.php&mQ&$qJPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/InvocationMocker.phpmQfKPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Invocation/Static.phpFmQF (KPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Invocation/Object.php - mQ - ҥEPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/Return.php mQ #ʶPPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/MatcherCollection.phpj mQj _MPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ReturnArgument.phpm mQm #D jIPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ReturnSelf.php mQ pWʶHPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/Exception.phpb mQb +`OPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ConsecutiveCalls.php mQ GMPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ReturnCallback.php mQ +MPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub/ReturnValueMap.php mQ `YDPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Verifiable.php mQ |DPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Invocation.php mQ 7>PHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Stub.php] mQ] ǶQPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/ParametersMatch.phpimQi9GPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/Match.phpx mQx hRPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/InvocationMocker.phpmQ*bKPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/Namespace.php mQ GQPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/MethodNameMatch.php mQ 6JPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/Identity.php mQ h_FPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/Builder/Stub.php mQ 0DPHPUnit_MockObject-1.2.3/PHPUnit/Framework/MockObject/MockObject.phpmQǧ4+PHPUnit_MockObject-1.2.3/ChangeLog.markdownmQUz*Yaml-2.1.2/Symfony/Component/Yaml/Yaml.php mQ qՋ6Yaml-2.1.2/Symfony/Component/Yaml/Tests/DumperTest.phpmQ31Z5Yaml-2.1.2/Symfony/Component/Yaml/Tests/bootstrap.phpmQabW6Yaml-2.1.2/Symfony/Component/Yaml/Tests/InlineTest.php"mQ"X6Yaml-2.1.2/Symfony/Component/Yaml/Tests/ParserTest.phpHmQH T4Yaml-2.1.2/Symfony/Component/Yaml/Tests/YamlTest.phpXmQX% >Yaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/sfObjects.ymlmQ<öGYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsNullsAndEmpties.ymlmQ>;<Yaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/sfTests.ymlmQU>Yaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/sfCompact.ymlU mQU BYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsErrorTests.ymlqmQqtrFYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/escapedCharacters.ymlmQ()MYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsSpecificationExamples.yml0mQ0,x`kBYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsBasicTests.ymlmQXGYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsFlowCollections.ymlXmQXZ{k?Yaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/embededPhp.ymlmQZܶ?Yaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/sfComments.ymlmQ@EYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsTypeTransfers.ymlmQT -DYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsBlockMapping.ymlmQCYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsAnchorAlias.yml[mQ[5R?Yaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/sfMergeKey.ymlJmQJ;:QIYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsDocumentSeparator.ymlmQ%MC=Yaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/sfQuotes.ymlmQ섶:Yaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/index.yml8mQ8EYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/YtsFoldedScalars.ymlzmQzګغJYaml-2.1.2/Symfony/Component/Yaml/Tests/Fixtures/unindentedCollections.yml-mQ-Ƕ/Yaml-2.1.2/Symfony/Component/Yaml/composer.jsonmQ7NK)Yaml-2.1.2/Symfony/Component/Yaml/LICENSE)mQ)C+,Yaml-2.1.2/Symfony/Component/Yaml/Dumper.phpmQ2Yaml-2.1.2/Symfony/Component/Yaml/phpunit.xml.dist3mQ3QB>Yaml-2.1.2/Symfony/Component/Yaml/Exception/ParseException.phpX mQX 33BYaml-2.1.2/Symfony/Component/Yaml/Exception/ExceptionInterface.phpmQ+l=Yaml-2.1.2/Symfony/Component/Yaml/Exception/DumpException.phpmQxC,Yaml-2.1.2/Symfony/Component/Yaml/Parser.phpyUmQyUw/Yaml-2.1.2/Symfony/Component/Yaml/Unescaper.phpmQh+Yaml-2.1.2/Symfony/Component/Yaml/README.mdmQ_,Yaml-2.1.2/Symfony/Component/Yaml/Inline.php5mQ5ň{i-Yaml-2.1.2/Symfony/Component/Yaml/Escaper.php] mQ] }.Yaml-2.1.2/Symfony/Component/Yaml/CHANGELOG.mdmQXlPHP_Timer-1.0.4/PHP/Timer.phpmQ%ζPHP_Timer-1.0.4/LICENSEmQ`A*"PHP_Timer-1.0.4/ChangeLog.markdownmQ&}PHP_Timer-1.0.4/README.markdown!mQ!px i!PHPUnit/Framework/TestFailure.phpmQ'PHPUnit/Framework/ComparatorFactory.phpImQIZ\+PHPUnit/Framework/SkippedTestSuiteError.php: -mQ: -cPHPUnit/Framework/Assert.php6fmQ6f3PHPUnit/Framework/TestCase.phpmQ!C߶&PHPUnit/Framework/Assert/Functions.php~mQ~/-)PHPUnit/Framework/Assert/Functions.php.inmQdx)PHPUnit/Framework/IncompleteTestError.php9 -mQ9 -do!PHPUnit/Framework/OutputError.php -mQ -CgPHPUnit/Framework/Exception.php mQ /`?PHPUnit/Framework/Warning.php5mQ5e'PHPUnit/Framework/ComparisonFailure.phpmQM&PHPUnit/Framework/SkippedTestError.php/ -mQ/ -a,*3PHPUnit/Framework/Constraint/ObjectHasAttribute.phpL mQL ;2*PHPUnit/Framework/Constraint/PCREMatch.phpJmQJem.PHPUnit/Framework/Constraint/ExceptionCode.phpymQy)V-PHPUnit/Framework/Constraint/IsInstanceOf.phpmQc)PHPUnit/Framework/Constraint/SameSize.php mQ 0臶(PHPUnit/Framework/Constraint/IsEqual.phpmQZȶ'PHPUnit/Framework/Constraint/IsNull.php mQ 8$'PHPUnit/Framework/Constraint/IsTrue.php mQ ,+Ͷ,PHPUnit/Framework/Constraint/ArrayHasKey.phpmQ'Fٶ,PHPUnit/Framework/Constraint/IsIdentical.phpImQIݢ*PHPUnit/Framework/Constraint/Exception.phpDmQD-xDɶ$PHPUnit/Framework/Constraint/And.phpmQQ8PHPUnit/Framework/Constraint/TraversableContainsOnly.phpImQIL)PHPUnit/Framework/Constraint/Callback.php{mQ{Qc$PHPUnit/Framework/Constraint/Not.phpcmQc`:2PHPUnit/Framework/Constraint/ClassHasAttribute.phpCmQCAPHPUnit/Framework/Constraint/JsonMatches/ErrorMessageProvider.phpmQy,PHPUnit/Framework/Constraint/GreaterThan.phpY mQY c׆+PHPUnit/Framework/Constraint/IsAnything.php mQ ZM/PHPUnit/Framework/Constraint/StringContains.phpmQdj4PHPUnit/Framework/Constraint/TraversableContains.phpmQ)PHPUnit/Framework/Constraint/LessThan.phpP mQP >.PHPUnit/Framework/Constraint/StringMatches.php;mQ;$n:*PHPUnit/Framework/Constraint/Composite.phpmQG$a|1PHPUnit/Framework/Constraint/ExceptionMessage.php[mQ[h9+PHPUnit/Framework/Constraint/FileExists.phpYmQYCŔ*PHPUnit/Framework/Constraint/Attribute.phpmQ #PHPUnit/Framework/Constraint/Or.phpmQ+/PHPUnit/Framework/Constraint/StringEndsWith.phpg mQg qR 8PHPUnit/Framework/Constraint/ClassHasStaticAttribute.php)mQ)i(PHPUnit/Framework/Constraint/IsFalse.php$ mQ$ c{R1PHPUnit/Framework/Constraint/StringStartsWith.phpV mQV u/<,PHPUnit/Framework/Constraint/JsonMatches.php,mQ,U(PHPUnit/Framework/Constraint/IsEmpty.phpjmQjطE&PHPUnit/Framework/Constraint/Count.phpmQ)$PHPUnit/Framework/Constraint/Xor.phpymQy%('PHPUnit/Framework/Constraint/IsType.phpmQZ- PHPUnit/Framework/Constraint.phpmQ)VPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Equals.phpU mQU 鉶[PHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/GenericPost.phpL -mQL -;aͶUPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Value.php -mQ -1жYPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Attribute.phpi mQi `8UPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Click.php -mQ -觶KPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/KeysHolder.phpmQudOPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Element/Select.php:mQ:RHPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Command.phpA mQA ]JPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Exception.php mQ ؄cGPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Driver.php"mQ"o[MPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/StateCommand.phpl -mQl -EGIPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Response.phpG mQG !ֶTPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/NoSeleniumException.php mQ 8jeSPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/WebDriverException.php[ mQ[ q\fdHPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session.php6mQ6U/YPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionStrategy/Isolated.php mQ NWPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionStrategy/Shared.php=mQ=#LGPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Window.phpD mQD oDPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/URL.phpmQWEPPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session/Storage.php- mQ- ThOPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session/Cookie.phpmQ'&WPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session/Cookie/Builder.phpmQ8toQPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/Session/Timeouts.phpNmQNVPPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/SessionStrategy.php mQ GPPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/Selenium2TestCase/ElementCriteria.phpC mQC mQ>*dBʶNPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/SeleniumCommon/phpunit_coverage.php mQ owDPHPUnit_Selenium-1.2.12/PHPUnit/Extensions/SeleniumCommon/append.php mQ *PHPUnit_Selenium-1.2.12/ChangeLog.markdownmQ)DbUnit-1.2.2/dbunit.batnmQnq{ODbUnit-1.2.2/LICENSEmQ IDbUnit-1.2.2/PHPUnit/Extensions/Database/DB/DefaultDatabaseConnection.phpmQbwz5DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/Table.php mQ 3>9DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/IMetaData.php%mQ%l=DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/TableIterator.phpymQy<CDbUnit-1.2.2/PHPUnit/Extensions/Database/DB/IDatabaseConnection.phpmQ!'7DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/DataSet.phpmQ[Fh'?DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/FilteredDataSet.php< mQ< n!0JDbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/InformationSchema.phpmQaP><DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/Oci.phpJmQJ-PZ>DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/PgSQL.phpvmQvەś?DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/Sqlite.phpmQ{jZ>DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/MySQL.phpmQ (Ͷ?DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData/SqlSrv.phpmQݕw=DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/TableMetaData.php mQ =׶>DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/ResultSetTable.php mQ ̯.8DbUnit-1.2.2/PHPUnit/Extensions/Database/DB/MetaData.phpmQ&Z v5DbUnit-1.2.2/PHPUnit/Extensions/Database/TestCase.php%mQ%8iH7DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Command.phpA mQA oP7DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/IMedium.phpH mQH EMDbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet/Arguments.phpmQ\eCDbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet.phpmQlv;DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/ModeFactory.phpmQ^<DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Mediums/Text.phpmQ"b7DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/Context.php mQ MDDbUnit-1.2.2/PHPUnit/Extensions/Database/UI/InvalidModeException.php mQ :G[85DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/IMode.php -mQ -X>DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/IMediumPrinter.php -mQ -XP<DbUnit-1.2.2/PHPUnit/Extensions/Database/UI/IModeFactory.php -mQ -@̹@DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Exception.phpmQ=DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Delete.php mQ F^쳶=DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Insert.phpmQ U7p?DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/RowBased.php1mQ1]T@DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/DeleteAll.php mQ rwL=DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Update.phpmQ'ɶ;DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Null.php -mQ -Lp^IDbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/IDatabaseOperation.php mQ @DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Composite.php~mQ~̋婶?DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Truncate.php mQ 2>V>DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Replace.phpLmQLRE>DbUnit-1.2.2/PHPUnit/Extensions/Database/Operation/Factory.phpmQj)6DbUnit-1.2.2/PHPUnit/Extensions/Database/Exception.php mQ ڤDDbUnit-1.2.2/PHPUnit/Extensions/Database/Constraint/TableIsEqual.phpSmQSTNFDbUnit-1.2.2/PHPUnit/Extensions/Database/Constraint/DataSetIsEqual.phpamQah VEDbUnit-1.2.2/PHPUnit/Extensions/Database/Constraint/TableRowCount.phpR mQR }BDbUnit-1.2.2/PHPUnit/Extensions/Database/IDatabaseListConsumer.php0 -mQ0 -h{SADbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/QueryDataSet.php^mQ^;2DDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/MysqlXmlDataSet.phpmQ gP?DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/QueryTable.phpmQQ::DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ISpec.phpx -mQx -=HDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/TableMetaDataFilter.phpmQfPGDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/AbstractXmlDataSet.phpmQz߶;DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ITable.php mQ ]3^ADbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DefaultTable.phpsmQsMDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ReplacementTableIterator.phpmQ2GDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.phpOmQO=DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/IDataSet.php mQ s,=CDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DefaultDataSet.php mQ FҶEDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ReplacementTable.php mQ ζBDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/AbstractTable.phpmQGCDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ITableIterator.php -mQ -C&'?DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/CsvDataSet.phpmQ=aJIDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DefaultTableMetaData.php mQ mjm?DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/Yaml.php mQ o Ķ>DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/Xml.php mQ Ձ9CDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/IFactory.php@ -mQ@ -Jt>DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/Csv.phpPmQPk"3:BDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/DbTable.phpsmQs+BDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/DbQuery.phpmQ|(lBDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/FlatXml.php mQ sBDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Specs/Factory.php mQ (SIDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DefaultTableIterator.phpmQBDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/DataSetFilter.phpmQˍCDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/ITableMetaData.php' mQ' aDDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/AbstractDataSet.phpmQ<~6?DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/XmlDataSet.phpmQCDDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/Yaml.phpmQD/CDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/Xml.phpmQ).HDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/MysqlXml.phpmQyHDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/Abstract.phpmQGDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/FlatXml.phpYmQYIi"GDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/Persistors/Factory.php mQ ADbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/IPersistable.php -mQ -&CDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/FlatXmlDataSet.phpEmQE6kEDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/CompositeDataSet.php6mQ68@DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/YamlDataSet.phpmQBJDbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/AbstractTableMetaData.phpmQ:@DbUnit-1.2.2/PHPUnit/Extensions/Database/DataSet/TableFilter.phpmQr5_;DbUnit-1.2.2/PHPUnit/Extensions/Database/AbstractTester.phpmQǹ:DbUnit-1.2.2/PHPUnit/Extensions/Database/DefaultTester.php mQ *r4DbUnit-1.2.2/PHPUnit/Extensions/Database/ITester.phpmQH-\DbUnit-1.2.2/ChangeLog.markdownmQ5WDbUnit-1.2.2/dbunit.phpumQudizt=DbUnit-1.2.2/Samples/BankAccountDB/BankAccountDBTestMySQL.phpmQ|LDbUnit-1.2.2/Samples/BankAccountDB/_files/bank-account-after-new-account.xmlQmQQ)IDbUnit-1.2.2/Samples/BankAccountDB/_files/bank-account-after-deposits.xmlmQCP$ƶLDbUnit-1.2.2/Samples/BankAccountDB/_files/bank-account-after-withdrawals.xml -mQ -':ݶ?DbUnit-1.2.2/Samples/BankAccountDB/_files/bank-account-seed.xml mQ . - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -// @codeCoverageIgnoreStart -// @codingStandardsIgnoreStart -/** - * @SuppressWarnings(PHPMD) - */ -if (!function_exists('trait_exists')) { - function trait_exists($name) - { - return FALSE; - } -} -// @codingStandardsIgnoreEnd -// @codeCoverageIgnoreEnd - -/** - * Provides collection functionality for PHP code coverage information. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage -{ - /** - * @var PHP_CodeCoverage_Driver - */ - protected $driver; - - /** - * @var PHP_CodeCoverage_Filter - */ - protected $filter; - - /** - * @var boolean - */ - protected $cacheTokens = FALSE; - - /** - * @var boolean - */ - protected $forceCoversAnnotation = FALSE; - - /** - * @var boolean - */ - protected $mapTestClassNameToCoveredClassName = FALSE; - - /** - * @var boolean - */ - protected $addUncoveredFilesFromWhitelist = TRUE; - - /** - * @var boolean - */ - protected $processUncoveredFilesFromWhitelist = FALSE; - - /** - * @var mixed - */ - protected $currentId; - - /** - * Code coverage data. - * - * @var array - */ - protected $data = array(); - - /** - * Test data. - * - * @var array - */ - protected $tests = array(); - - /** - * Constructor. - * - * @param PHP_CodeCoverage_Driver $driver - * @param PHP_CodeCoverage_Filter $filter - */ - public function __construct(PHP_CodeCoverage_Driver $driver = NULL, PHP_CodeCoverage_Filter $filter = NULL) - { - if ($driver === NULL) { - $driver = new PHP_CodeCoverage_Driver_Xdebug; - } - - if ($filter === NULL) { - $filter = new PHP_CodeCoverage_Filter; - } - - $this->driver = $driver; - $this->filter = $filter; - } - - /** - * Returns the PHP_CodeCoverage_Report_Node_* object graph - * for this PHP_CodeCoverage object. - * - * @return PHP_CodeCoverage_Report_Node_Directory - * @since Method available since Release 1.1.0 - */ - public function getReport() - { - $factory = new PHP_CodeCoverage_Report_Factory; - - return $factory->create($this); - } - - /** - * Clears collected code coverage data. - */ - public function clear() - { - $this->currentId = NULL; - $this->data = array(); - $this->tests = array(); - } - - /** - * Returns the PHP_CodeCoverage_Filter used. - * - * @return PHP_CodeCoverage_Filter - */ - public function filter() - { - return $this->filter; - } - - /** - * Returns the collected code coverage data. - * - * @return array - * @since Method available since Release 1.1.0 - */ - public function getData() - { - if ($this->addUncoveredFilesFromWhitelist) { - $this->addUncoveredFilesFromWhitelist(); - } - - // We need to apply the blacklist filter a second time - // when no whitelist is used. - if (!$this->filter->hasWhitelist()) { - $this->applyListsFilter($this->data); - } - - return $this->data; - } - - /** - * Returns the test data. - * - * @return array - * @since Method available since Release 1.1.0 - */ - public function getTests() - { - return $this->tests; - } - - /** - * Start collection of code coverage information. - * - * @param mixed $id - * @param boolean $clear - * @throws PHP_CodeCoverage_Exception - */ - public function start($id, $clear = FALSE) - { - if (!is_bool($clear)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, 'boolean' - ); - } - - if ($clear) { - $this->clear(); - } - - $this->currentId = $id; - - $this->driver->start(); - } - - /** - * Stop collection of code coverage information. - * - * @param boolean $append - * @return array - * @throws PHP_CodeCoverage_Exception - */ - public function stop($append = TRUE) - { - if (!is_bool($append)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, 'boolean' - ); - } - - $data = $this->driver->stop(); - $this->append($data, NULL, $append); - - $this->currentId = NULL; - - return $data; - } - - /** - * Appends code coverage data. - * - * @param array $data - * @param mixed $id - * @param boolean $append - */ - public function append(array $data, $id = NULL, $append = TRUE) - { - if ($id === NULL) { - $id = $this->currentId; - } - - if ($id === NULL) { - throw new PHP_CodeCoverage_Exception; - } - - $this->applyListsFilter($data); - $this->initializeFilesThatAreSeenTheFirstTime($data); - - if (!$append) { - return; - } - - if ($id != 'UNCOVERED_FILES_FROM_WHITELIST') { - $this->applyCoversAnnotationFilter($data, $id); - } - - if (empty($data)) { - return; - } - - $status = NULL; - - if ($id instanceof PHPUnit_Framework_TestCase) { - $status = $id->getStatus(); - $id = get_class($id) . '::' . $id->getName(); - } - - else if ($id instanceof PHPUnit_Extensions_PhptTestCase) { - $id = $id->getName(); - } - - $this->tests[$id] = $status; - - foreach ($data as $file => $lines) { - if (!$this->filter->isFile($file)) { - continue; - } - - foreach ($lines as $k => $v) { - if ($v == 1) { - $this->data[$file][$k][] = $id; - } - } - } - } - - /** - * Merges the data from another instance of PHP_CodeCoverage. - * - * @param PHP_CodeCoverage $that - */ - public function merge(PHP_CodeCoverage $that) - { - foreach ($that->data as $file => $lines) { - if (!isset($this->data[$file])) { - if (!$this->filter->isFiltered($file)) { - $this->data[$file] = $lines; - } - - continue; - } - - foreach ($lines as $line => $data) { - if ($data !== NULL) { - if (!isset($this->data[$file][$line])) { - $this->data[$file][$line] = $data; - } else { - $this->data[$file][$line] = array_unique( - array_merge($this->data[$file][$line], $data) - ); - } - } - } - } - - $this->tests = array_merge($this->tests, $that->getTests()); - } - - /** - * @param boolean $flag - * @throws PHP_CodeCoverage_Exception - * @since Method available since Release 1.1.0 - */ - public function setCacheTokens($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, 'boolean' - ); - } - - $this->cacheTokens = $flag; - } - - /** - * @param boolean $flag - * @since Method available since Release 1.1.0 - */ - public function getCacheTokens() - { - return $this->cacheTokens; - } - - /** - * @param boolean $flag - * @throws PHP_CodeCoverage_Exception - */ - public function setForceCoversAnnotation($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, 'boolean' - ); - } - - $this->forceCoversAnnotation = $flag; - } - - /** - * @param boolean $flag - * @throws PHP_CodeCoverage_Exception - */ - public function setMapTestClassNameToCoveredClassName($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, 'boolean' - ); - } - - $this->mapTestClassNameToCoveredClassName = $flag; - } - - /** - * @param boolean $flag - * @throws PHP_CodeCoverage_Exception - */ - public function setAddUncoveredFilesFromWhitelist($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, 'boolean' - ); - } - - $this->addUncoveredFilesFromWhitelist = $flag; - } - - /** - * @param boolean $flag - * @throws PHP_CodeCoverage_Exception - */ - public function setProcessUncoveredFilesFromWhitelist($flag) - { - if (!is_bool($flag)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, 'boolean' - ); - } - - $this->processUncoveredFilesFromWhitelist = $flag; - } - - /** - * Applies the @covers annotation filtering. - * - * @param array $data - * @param mixed $id - */ - protected function applyCoversAnnotationFilter(&$data, $id) - { - if ($id instanceof PHPUnit_Framework_TestCase) { - $testClassName = get_class($id); - $linesToBeCovered = $this->getLinesToBeCovered( - $testClassName, $id->getName() - ); - - if ($linesToBeCovered === FALSE) { - $data = array(); - return; - } - - if ($this->mapTestClassNameToCoveredClassName && - empty($linesToBeCovered)) { - $testedClass = substr($testClassName, 0, -4); - - if (class_exists($testedClass)) { - $class = new ReflectionClass($testedClass); - - $linesToBeCovered = array( - $class->getFileName() => range( - $class->getStartLine(), $class->getEndLine() - ) - ); - } - } - } else { - $linesToBeCovered = array(); - } - - if (!empty($linesToBeCovered)) { - $data = array_intersect_key($data, $linesToBeCovered); - - foreach (array_keys($data) as $filename) { - $data[$filename] = array_intersect_key( - $data[$filename], array_flip($linesToBeCovered[$filename]) - ); - } - } - - else if ($this->forceCoversAnnotation) { - $data = array(); - } - } - - /** - * Applies the blacklist/whitelist filtering. - * - * @param array $data - */ - protected function applyListsFilter(&$data) - { - foreach (array_keys($data) as $filename) { - if ($this->filter->isFiltered($filename)) { - unset($data[$filename]); - } - } - } - - /** - * @since Method available since Release 1.1.0 - */ - protected function initializeFilesThatAreSeenTheFirstTime($data) - { - foreach ($data as $file => $lines) { - if ($this->filter->isFile($file) && !isset($this->data[$file])) { - $this->data[$file] = array(); - - foreach ($lines as $k => $v) { - $this->data[$file][$k] = $v == -2 ? NULL : array(); - } - } - } - } - - /** - * Processes whitelisted files that are not covered. - */ - protected function addUncoveredFilesFromWhitelist() - { - $data = array(); - $uncoveredFiles = array_diff( - $this->filter->getWhitelist(), array_keys($this->data) - ); - - foreach ($uncoveredFiles as $uncoveredFile) { - if (!file_exists($uncoveredFile)) { - continue; - } - - if ($this->processUncoveredFilesFromWhitelist) { - $this->processUncoveredFileFromWhitelist( - $uncoveredFile, $data, $uncoveredFiles - ); - } else { - $data[$uncoveredFile] = array(); - - $lines = count(file($uncoveredFile)); - - for ($i = 1; $i <= $lines; $i++) { - $data[$uncoveredFile][$i] = -1; - } - } - } - - $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST'); - } - - /** - * @param string $uncoveredFile - * @param array $data - * @param array $uncoveredFiles - */ - protected function processUncoveredFileFromWhitelist($uncoveredFile, array &$data, array $uncoveredFiles) - { - $this->driver->start(); - include_once $uncoveredFile; - $coverage = $this->driver->stop(); - - foreach ($coverage as $file => $fileCoverage) { - if (!isset($data[$file]) && - in_array($file, $uncoveredFiles)) { - foreach (array_keys($fileCoverage) as $key) { - if ($fileCoverage[$key] == 1) { - $fileCoverage[$key] = -1; - } - } - - $data[$file] = $fileCoverage; - } - } - } - - /** - * Returns the files and lines a test method wants to cover. - * - * @param string $className - * @param string $methodName - * @return array - * @since Method available since Release 1.2.0 - */ - protected function getLinesToBeCovered($className, $methodName) - { - $codeToCoverList = array(); - $result = array(); - - // @codeCoverageIgnoreStart - if (($pos = strpos($methodName, ' ')) !== FALSE) { - $methodName = substr($methodName, 0, $pos); - } - // @codeCoverageIgnoreEnd - - $class = new ReflectionClass($className); - - try { - $method = new ReflectionMethod($className, $methodName); - } - - catch (ReflectionException $e) { - return array(); - } - - $docComment = substr($class->getDocComment(), 3, -2) . PHP_EOL . substr($method->getDocComment(), 3, -2); - - $templateMethods = array( - 'setUp', 'assertPreConditions', 'assertPostConditions', 'tearDown' - ); - - foreach ($templateMethods as $templateMethod) { - if ($class->hasMethod($templateMethod)) { - $reflector = $class->getMethod($templateMethod); - $docComment .= PHP_EOL . substr($reflector->getDocComment(), 3, -2); - unset($reflector); - } - } - - if (strpos($docComment, '@coversNothing') !== FALSE) { - return FALSE; - } - - $classShortcut = preg_match_all( - '(@coversDefaultClass\s+(?P.*?)\s*$)m', - $class->getDocComment(), - $matches - ); - - if ($classShortcut) { - if ($classShortcut > 1) { - throw new PHP_CodeCoverage_Exception( - sprintf( - 'More than one @coversClass annotation in class or interface "%s".', - $className - ) - ); - } - - $classShortcut = $matches['coveredClass'][0]; - } - - $match = preg_match_all( - '(@covers\s+(?P.*?)\s*(\(\s*\))?\s*$)m', - $docComment, - $matches - ); - - if ($match) { - foreach ($matches['coveredElement'] as $coveredElement) { - if ($classShortcut && strncmp($coveredElement, '::', 2) === 0) { - $coveredElement = $classShortcut . $coveredElement; - } - - $codeToCoverList = array_merge( - $codeToCoverList, - $this->resolveCoversToReflectionObjects($coveredElement) - ); - } - - foreach ($codeToCoverList as $codeToCover) { - $fileName = $codeToCover->getFileName(); - - if (!isset($result[$fileName])) { - $result[$fileName] = array(); - } - - $result[$fileName] = array_unique( - array_merge( - $result[$fileName], - range( - $codeToCover->getStartLine(), $codeToCover->getEndLine() - ) - ) - ); - } - } - - return $result; - } - - /** - * @param string $coveredElement - * @return array - * @since Method available since Release 1.2.0 - */ - protected function resolveCoversToReflectionObjects($coveredElement) - { - $codeToCoverList = array(); - - if (strpos($coveredElement, '::') !== FALSE) { - list($className, $methodName) = explode('::', $coveredElement); - - if (isset($methodName[0]) && $methodName[0] == '<') { - $classes = array($className); - - foreach ($classes as $className) { - if (!class_exists($className) && - !interface_exists($className)) { - throw new PHP_CodeCoverage_Exception( - sprintf( - 'Trying to @cover not existing class or ' . - 'interface "%s".', - $className - ) - ); - } - - $class = new ReflectionClass($className); - $methods = $class->getMethods(); - $inverse = isset($methodName[1]) && $methodName[1] == '!'; - - if (strpos($methodName, 'protected')) { - $visibility = 'isProtected'; - } - - else if (strpos($methodName, 'private')) { - $visibility = 'isPrivate'; - } - - else if (strpos($methodName, 'public')) { - $visibility = 'isPublic'; - } - - foreach ($methods as $method) { - if ($inverse && !$method->$visibility()) { - $codeToCoverList[] = $method; - } - - else if (!$inverse && $method->$visibility()) { - $codeToCoverList[] = $method; - } - } - } - } else { - $classes = array($className); - - foreach ($classes as $className) { - if ($className == '' && function_exists($methodName)) { - $codeToCoverList[] = new ReflectionFunction( - $methodName - ); - } else { - if (!((class_exists($className) || - interface_exists($className) || - trait_exists($className)) && - method_exists($className, $methodName))) { - throw new PHP_CodeCoverage_Exception( - sprintf( - 'Trying to @cover not existing method "%s::%s".', - $className, - $methodName - ) - ); - } - - $codeToCoverList[] = new ReflectionMethod( - $className, $methodName - ); - } - } - } - } else { - $extended = FALSE; - - if (strpos($coveredElement, '') !== FALSE) { - $coveredElement = str_replace( - '', '', $coveredElement - ); - - $extended = TRUE; - } - - $classes = array($coveredElement); - - if ($extended) { - $classes = array_merge( - $classes, - class_implements($coveredElement), - class_parents($coveredElement) - ); - } - - foreach ($classes as $className) { - if (!class_exists($className) && - !interface_exists($className) && - !trait_exists($className)) { - throw new PHP_CodeCoverage_Exception( - sprintf( - 'Trying to @cover not existing class or ' . - 'interface "%s".', - $className - ) - ); - } - - $codeToCoverList[] = new ReflectionClass($className); - } - } - - return $codeToCoverList; - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.2.0 - */ - -/** - * Factory for PHP_CodeCoverage_Exception objects that are used to describe - * invalid arguments passed to a function or method. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.2.0 - */ -class PHP_CodeCoverage_Util_InvalidArgumentHelper -{ - /** - * @param integer $argument - * @param string $type - * @param mixed $value - */ - public static function factory($argument, $type, $value = NULL) - { - $stack = debug_backtrace(FALSE); - - return new PHP_CodeCoverage_Exception( - sprintf( - 'Argument #%d%sof %s::%s() must be a %s', - $argument, - $value !== NULL ? ' (' . $value . ')' : ' ', - $stack[1]['class'], - $stack[1]['function'], - $type - ) - ); - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Driver for Xdebug's code coverage functionality. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - * @codeCoverageIgnore - */ -class PHP_CodeCoverage_Driver_Xdebug implements PHP_CodeCoverage_Driver -{ - /** - * Constructor. - */ - public function __construct() - { - if (!extension_loaded('xdebug')) { - throw new PHP_CodeCoverage_Exception('Xdebug is not loaded.'); - } - - if (version_compare(phpversion('xdebug'), '2.2.0-dev', '>=') && - !ini_get('xdebug.coverage_enable')) { - throw new PHP_CodeCoverage_Exception( - 'You need to set xdebug.coverage_enable=On in your php.ini.' - ); - } - } - - /** - * Start collection of code coverage information. - */ - public function start() - { - xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE); - } - - /** - * Stop collection of code coverage information. - * - * @return array - */ - public function stop() - { - $codeCoverage = xdebug_get_code_coverage(); - xdebug_stop_code_coverage(); - - return $codeCoverage; - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Utility methods. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Util -{ - /** - * @var array - */ - protected static $ignoredLines = array(); - - /** - * @var array - */ - protected static $ids = array(); - - - /** - * Returns the lines of a source file that should be ignored. - * - * @param string $filename - * @param boolean $cacheTokens - * @return array - * @throws PHP_CodeCoverage_Exception - */ - public static function getLinesToBeIgnored($filename, $cacheTokens = TRUE) - { - if (!is_string($filename)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, 'string' - ); - } - - if (!is_bool($cacheTokens)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 2, 'boolean' - ); - } - - if (!isset(self::$ignoredLines[$filename])) { - self::$ignoredLines[$filename] = array(); - $ignore = FALSE; - $stop = FALSE; - $lines = file($filename); - - foreach ($lines as $index => $line) { - if (!trim($line)) { - self::$ignoredLines[$filename][$index+1] = TRUE; - } - } - - if ($cacheTokens) { - $tokens = PHP_Token_Stream_CachingFactory::get($filename); - } else { - $tokens = new PHP_Token_Stream($filename); - } - - $classes = array_merge($tokens->getClasses(), $tokens->getTraits()); - $tokens = $tokens->tokens(); - - foreach ($tokens as $token) { - switch (get_class($token)) { - case 'PHP_Token_COMMENT': - case 'PHP_Token_DOC_COMMENT': { - $count = substr_count($token, "\n"); - $line = $token->getLine(); - - for ($i = $line; $i < $line + $count; $i++) { - self::$ignoredLines[$filename][$i] = TRUE; - } - - if ($token instanceof PHP_Token_DOC_COMMENT) { - // Workaround for the fact the DOC_COMMENT token - // does not include the final \n character in its - // text. - if (substr(trim($lines[$i-1]), -2) == '*/') { - self::$ignoredLines[$filename][$i] = TRUE; - } - - break; - } - - $_token = trim($token); - - if ($_token == '// @codeCoverageIgnore' || - $_token == '//@codeCoverageIgnore') { - $ignore = TRUE; - $stop = TRUE; - } - - else if ($_token == '// @codeCoverageIgnoreStart' || - $_token == '//@codeCoverageIgnoreStart') { - $ignore = TRUE; - } - - else if ($_token == '// @codeCoverageIgnoreEnd' || - $_token == '//@codeCoverageIgnoreEnd') { - $stop = TRUE; - } - } - break; - - case 'PHP_Token_INTERFACE': - case 'PHP_Token_TRAIT': - case 'PHP_Token_CLASS': - case 'PHP_Token_FUNCTION': { - $docblock = $token->getDocblock(); - - if (strpos($docblock, '@codeCoverageIgnore')) { - $endLine = $token->getEndLine(); - - for ($i = $token->getLine(); $i <= $endLine; $i++) { - self::$ignoredLines[$filename][$i] = TRUE; - } - } - - else if ($token instanceof PHP_Token_INTERFACE || - $token instanceof PHP_Token_TRAIT || - $token instanceof PHP_Token_CLASS) { - if (empty($classes[$token->getName()]['methods'])) { - for ($i = $token->getLine(); - $i <= $token->getEndLine(); - $i++) { - self::$ignoredLines[$filename][$i] = TRUE; - } - } else { - $firstMethod = array_shift( - $classes[$token->getName()]['methods'] - ); - - $lastMethod = array_pop( - $classes[$token->getName()]['methods'] - ); - - if ($lastMethod === NULL) { - $lastMethod = $firstMethod; - } - - for ($i = $token->getLine(); - $i < $firstMethod['startLine']; - $i++) { - self::$ignoredLines[$filename][$i] = TRUE; - } - - for ($i = $token->getEndLine(); - $i > $lastMethod['endLine']; - $i--) { - self::$ignoredLines[$filename][$i] = TRUE; - } - } - } - } - break; - - case 'PHP_Token_INTERFACE': { - $endLine = $token->getEndLine(); - - for ($i = $token->getLine(); $i <= $endLine; $i++) { - self::$ignoredLines[$filename][$i] = TRUE; - } - } - break; - - case 'PHP_Token_NAMESPACE': { - self::$ignoredLines[$filename][$token->getEndLine()] = TRUE; - } // Intentional fallthrough - case 'PHP_Token_OPEN_TAG': - case 'PHP_Token_CLOSE_TAG': - case 'PHP_Token_USE': { - self::$ignoredLines[$filename][$token->getLine()] = TRUE; - } - break; - } - - if ($ignore) { - self::$ignoredLines[$filename][$token->getLine()] = TRUE; - - if ($stop) { - $ignore = FALSE; - $stop = FALSE; - } - } - } - } - - return self::$ignoredLines[$filename]; - } - - /** - * @param float $a - * @param float $b - * @return float ($a / $b) * 100 - */ - public static function percent($a, $b, $asString = FALSE, $fixedWidth = FALSE) - { - if ($asString && $b == 0) { - return ''; - } - - if ($b > 0) { - $percent = ($a / $b) * 100; - } else { - $percent = 100; - } - - if ($asString) { - if ($fixedWidth) { - return sprintf('%6.2F%%', $percent); - } - - return sprintf('%01.2F%%', $percent); - } else { - return $percent; - } - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Exception class for PHP_CodeCoverage component. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Exception extends RuntimeException -{ -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Interface for code coverage drivers. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -interface PHP_CodeCoverage_Driver -{ - /** - * Start collection of code coverage information. - */ - public function start(); - - /** - * Stop collection of code coverage information. - * - * @return array - */ - public function stop(); -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Filter for blacklisting and whitelisting of code coverage information. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Filter -{ - /** - * Source files that are blacklisted. - * - * @var array - */ - protected $blacklistedFiles = array(); - - /** - * Source files that are whitelisted. - * - * @var array - */ - protected $whitelistedFiles = array(); - - /** - * @var boolean - */ - protected $blacklistPrefilled = FALSE; - - /** - * Adds a directory to the blacklist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function addDirectoryToBlacklist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - $directory, $suffix, $prefix - ); - - foreach ($files as $file) { - $this->addFileToBlacklist($file); - } - } - - /** - * Adds a file to the blacklist. - * - * @param string $filename - */ - public function addFileToBlacklist($filename) - { - $this->blacklistedFiles[realpath($filename)] = TRUE; - } - - /** - * Adds files to the blacklist. - * - * @param array $files - */ - public function addFilesToBlacklist(array $files) - { - foreach ($files as $file) { - $this->addFileToBlacklist($file); - } - } - - /** - * Removes a directory from the blacklist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function removeDirectoryFromBlacklist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - $directory, $suffix, $prefix - ); - - foreach ($files as $file) { - $this->removeFileFromBlacklist($file); - } - } - - /** - * Removes a file from the blacklist. - * - * @param string $filename - */ - public function removeFileFromBlacklist($filename) - { - $filename = realpath($filename); - - if (isset($this->blacklistedFiles[$filename])) { - unset($this->blacklistedFiles[$filename]); - } - } - - /** - * Adds a directory to the whitelist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function addDirectoryToWhitelist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - $directory, $suffix, $prefix - ); - - foreach ($files as $file) { - $this->addFileToWhitelist($file); - } - } - - /** - * Adds a file to the whitelist. - * - * @param string $filename - */ - public function addFileToWhitelist($filename) - { - $this->whitelistedFiles[realpath($filename)] = TRUE; - } - - /** - * Adds files to the whitelist. - * - * @param array $files - */ - public function addFilesToWhitelist(array $files) - { - foreach ($files as $file) { - $this->addFileToWhitelist($file); - } - } - - /** - * Removes a directory from the whitelist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function removeDirectoryFromWhitelist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - $directory, $suffix, $prefix - ); - - foreach ($files as $file) { - $this->removeFileFromWhitelist($file); - } - } - - /** - * Removes a file from the whitelist. - * - * @param string $filename - */ - public function removeFileFromWhitelist($filename) - { - $filename = realpath($filename); - - if (isset($this->whitelistedFiles[$filename])) { - unset($this->whitelistedFiles[$filename]); - } - } - - /** - * Checks whether a filename is a real filename. - * - * @param string $filename - */ - public function isFile($filename) - { - if ($filename == '-' || - strpos($filename, 'eval()\'d code') !== FALSE || - strpos($filename, 'runtime-created function') !== FALSE || - strpos($filename, 'runkit created function') !== FALSE || - strpos($filename, 'assert code') !== FALSE || - strpos($filename, 'regexp code') !== FALSE) { - return FALSE; - } - - return TRUE; - } - - /** - * Checks whether or not a file is filtered. - * - * When the whitelist is empty (default), blacklisting is used. - * When the whitelist is not empty, whitelisting is used. - * - * @param string $filename - * @param boolean $ignoreWhitelist - * @return boolean - * @throws PHP_CodeCoverage_Exception - */ - public function isFiltered($filename) - { - $filename = realpath($filename); - - if (!empty($this->whitelistedFiles)) { - return !isset($this->whitelistedFiles[$filename]); - } - - if (!$this->blacklistPrefilled) { - $this->prefillBlacklist(); - } - - return isset($this->blacklistedFiles[$filename]); - } - - /** - * Returns the list of blacklisted files. - * - * @return array - */ - public function getBlacklist() - { - return array_keys($this->blacklistedFiles); - } - - /** - * Returns the list of whitelisted files. - * - * @return array - */ - public function getWhitelist() - { - return array_keys($this->whitelistedFiles); - } - - /** - * Returns whether this filter has a whitelist. - * - * @return boolean - * @since Method available since Release 1.1.0 - */ - public function hasWhitelist() - { - return !empty($this->whitelistedFiles); - } - - /** - * @since Method available since Release 1.2.3 - */ - protected function prefillBlacklist() - { - $this->addDirectoryContainingClassToBlacklist('File_Iterator'); - $this->addDirectoryContainingClassToBlacklist('PHP_CodeCoverage'); - $this->addDirectoryContainingClassToBlacklist('PHP_Invoker'); - $this->addDirectoryContainingClassToBlacklist('PHP_Timer'); - $this->addDirectoryContainingClassToBlacklist('PHP_Token'); - $this->addDirectoryContainingClassToBlacklist('PHPUnit_Framework_TestCase', 2); - $this->addDirectoryContainingClassToBlacklist('PHPUnit_Extensions_Database_TestCase', 2); - $this->addDirectoryContainingClassToBlacklist('PHPUnit_Framework_MockObject_Generator', 2); - $this->addDirectoryContainingClassToBlacklist('PHPUnit_Extensions_SeleniumTestCase', 2); - $this->addDirectoryContainingClassToBlacklist('PHPUnit_Extensions_Story_TestCase', 2); - $this->addDirectoryContainingClassToBlacklist('Text_Template'); - $this->addDirectoryContainingClassToBlacklist('Symfony\Component\Yaml\Yaml'); - - $this->blacklistPrefilled = TRUE; - } - - /** - * @param string $className - * @param integer $parent - * @since Method available since Release 1.2.3 - */ - protected function addDirectoryContainingClassToBlacklist($className, $parent = 1) - { - if (!class_exists($className)) { - return; - } - - $reflector = new ReflectionClass($className); - $directory = $reflector->getFileName(); - - for ($i = 0; $i < $parent; $i++) { - $directory = dirname($directory); - } - - $this->addDirectoryToBlacklist($directory); - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.2.1 - */ - -/** - * - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.2.1 - */ -class PHP_CodeCoverage_Version -{ - const VERSION = '1.2.8'; - protected static $version; - - /** - * Returns the version of PHP_CodeCoverage. - * - * @return string - */ - public static function id() - { - if (self::$version === NULL) { - self::$version = self::VERSION; - - if (is_dir(dirname(dirname(__DIR__)) . '/.git')) { - $dir = getcwd(); - chdir(__DIR__); - $version = exec('git describe --tags'); - chdir($dir); - - if ($version) { - if (count(explode('.', self::VERSION)) == 3) { - self::$version = $version; - } else { - $version = explode('-', $version); - - self::$version = self::VERSION . '-' . $version[2]; - } - } - } - } - - return self::$version; - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Base class for nodes in the code coverage information tree. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -abstract class PHP_CodeCoverage_Report_Node implements Countable -{ - /** - * @var string - */ - protected $name; - - /** - * @var string - */ - protected $path; - - /** - * @var array - */ - protected $pathArray; - - /** - * @var PHP_CodeCoverage_Report_Node - */ - protected $parent; - - /** - * @var string - */ - protected $id; - - /** - * Constructor. - * - * @param string $name - * @param PHP_CodeCoverage_Report_Node $parent - */ - public function __construct($name, PHP_CodeCoverage_Report_Node $parent = NULL) - { - if (substr($name, -1) == '/') { - $name = substr($name, 0, -1); - } - - $this->name = $name; - $this->parent = $parent; - } - - /** - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * @return string - */ - public function getId() - { - if ($this->id === NULL) { - $parent = $this->getParent(); - - if ($parent === NULL) { - $this->id = 'index'; - } else { - $parentId = $parent->getId(); - - if ($parentId == 'index') { - $this->id = str_replace(':', '_', $this->name); - } else { - $this->id = $parentId . '_' . $this->name; - } - } - } - - return $this->id; - } - - /** - * @return string - */ - public function getPath() - { - if ($this->path === NULL) { - if ($this->parent === NULL) { - $this->path = $this->name; - } else { - $this->path = $this->parent->getPath() . '/' . $this->name; - } - } - - return $this->path; - } - - /** - * @return array - */ - public function getPathAsArray() - { - if ($this->pathArray === NULL) { - if ($this->parent === NULL) { - $this->pathArray = array(); - } else { - $this->pathArray = $this->parent->getPathAsArray(); - } - - $this->pathArray[] = $this; - } - - return $this->pathArray; - } - - /** - * @return PHP_CodeCoverage_Report_Node - */ - public function getParent() - { - return $this->parent; - } - - /** - * Returns the percentage of classes that has been tested. - * - * @param boolean $asString - * @return integer - */ - public function getTestedClassesPercent($asString = TRUE) - { - return PHP_CodeCoverage_Util::percent( - $this->getNumTestedClasses(), - $this->getNumClasses(), - $asString - ); - } - - /** - * Returns the percentage of traits that has been tested. - * - * @param boolean $asString - * @return integer - */ - public function getTestedTraitsPercent($asString = TRUE) - { - return PHP_CodeCoverage_Util::percent( - $this->getNumTestedTraits(), - $this->getNumTraits(), - $asString - ); - } - - /** - * Returns the percentage of traits that has been tested. - * - * @param boolean $asString - * @return integer - * @since Method available since Release 1.2.0 - */ - public function getTestedClassesAndTraitsPercent($asString = TRUE) - { - return PHP_CodeCoverage_Util::percent( - $this->getNumTestedClassesAndTraits(), - $this->getNumClassesAndTraits(), - $asString - ); - } - - /** - * Returns the percentage of methods that has been tested. - * - * @param boolean $asString - * @return integer - */ - public function getTestedMethodsPercent($asString = TRUE) - { - return PHP_CodeCoverage_Util::percent( - $this->getNumTestedMethods(), - $this->getNumMethods(), - $asString - ); - } - - /** - * Returns the percentage of executed lines. - * - * @param boolean $asString - * @return integer - */ - public function getLineExecutedPercent($asString = TRUE) - { - return PHP_CodeCoverage_Util::percent( - $this->getNumExecutedLines(), - $this->getNumExecutableLines(), - $asString - ); - } - - /** - * Returns the number of classes and traits. - * - * @return integer - * @since Method available since Release 1.2.0 - */ - public function getNumClassesAndTraits() - { - return $this->getNumClasses() + $this->getNumTraits(); - } - - /** - * Returns the number of tested classes and traits. - * - * @return integer - * @since Method available since Release 1.2.0 - */ - public function getNumTestedClassesAndTraits() - { - return $this->getNumTestedClasses() + $this->getNumTestedTraits(); - } - - /** - * Returns the classes and traits of this node. - * - * @return array - * @since Method available since Release 1.2.0 - */ - public function getClassesAndTraits() - { - return array_merge($this->getClasses(), $this->getTraits()); - } - - /** - * Returns the classes of this node. - * - * @return array - */ - abstract public function getClasses(); - - /** - * Returns the traits of this node. - * - * @return array - */ - abstract public function getTraits(); - - /** - * Returns the functions of this node. - * - * @return array - */ - abstract public function getFunctions(); - - /** - * Returns the LOC/CLOC/NCLOC of this node. - * - * @return array - */ - abstract public function getLinesOfCode(); - - /** - * Returns the number of executable lines. - * - * @return integer - */ - abstract public function getNumExecutableLines(); - - /** - * Returns the number of executed lines. - * - * @return integer - */ - abstract public function getNumExecutedLines(); - - /** - * Returns the number of classes. - * - * @return integer - */ - abstract public function getNumClasses(); - - /** - * Returns the number of tested classes. - * - * @return integer - */ - abstract public function getNumTestedClasses(); - - /** - * Returns the number of traits. - * - * @return integer - */ - abstract public function getNumTraits(); - - /** - * Returns the number of tested traits. - * - * @return integer - */ - abstract public function getNumTestedTraits(); - - /** - * Returns the number of methods. - * - * @return integer - */ - abstract public function getNumMethods(); - - /** - * Returns the number of tested methods. - * - * @return integer - */ - abstract public function getNumTestedMethods(); - - /** - * Returns the number of functions. - * - * @return integer - */ - abstract public function getNumFunctions(); - - /** - * Returns the number of tested functions. - * - * @return integer - */ - abstract public function getNumTestedFunctions(); -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Represents a file in the code coverage information tree. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_Node_File extends PHP_CodeCoverage_Report_Node -{ - /** - * @var array - */ - protected $coverageData; - - /** - * @var array - */ - protected $testData; - - /** - * @var array - */ - protected $ignoredLines; - - /** - * @var integer - */ - protected $numExecutableLines = 0; - - /** - * @var integer - */ - protected $numExecutedLines = 0; - - /** - * @var array - */ - protected $classes = array(); - - /** - * @var array - */ - protected $traits = array(); - - /** - * @var array - */ - protected $functions = array(); - - /** - * @var array - */ - protected $linesOfCode = array(); - - /** - * @var integer - */ - protected $numTestedTraits = 0; - - /** - * @var integer - */ - protected $numTestedClasses = 0; - - /** - * @var integer - */ - protected $numMethods = NULL; - - /** - * @var integer - */ - protected $numTestedMethods = NULL; - - /** - * @var integer - */ - protected $numTestedFunctions = NULL; - - /** - * @var array - */ - protected $startLines = array(); - - /** - * @var array - */ - protected $endLines = array(); - - /** - * @var boolean - */ - protected $cacheTokens; - - /** - * Constructor. - * - * @param string $name - * @param PHP_CodeCoverage_Report_Node $parent - * @param array $coverageData - * @param array $testData - * @param boolean $cacheTokens - * @throws PHP_CodeCoverage_Exception - */ - public function __construct($name, PHP_CodeCoverage_Report_Node $parent, array $coverageData, array $testData, $cacheTokens) - { - if (!is_bool($cacheTokens)) { - throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory( - 1, 'boolean' - ); - } - - parent::__construct($name, $parent); - - $this->coverageData = $coverageData; - $this->testData = $testData; - $this->ignoredLines = PHP_CodeCoverage_Util::getLinesToBeIgnored( - $this->getPath(), $cacheTokens - ); - $this->cacheTokens = $cacheTokens; - - $this->calculateStatistics(); - } - - /** - * Returns the number of files in/under this node. - * - * @return integer - */ - public function count() - { - return 1; - } - - /** - * Returns the code coverage data of this node. - * - * @return array - */ - public function getCoverageData() - { - return $this->coverageData; - } - - /** - * Returns the test data of this node. - * - * @return array - */ - public function getTestData() - { - return $this->testData; - } - - /** - * @return array - */ - public function getIgnoredLines() - { - return $this->ignoredLines; - } - - /** - * Returns the classes of this node. - * - * @return array - */ - public function getClasses() - { - return $this->classes; - } - - /** - * Returns the traits of this node. - * - * @return array - */ - public function getTraits() - { - return $this->traits; - } - - /** - * Returns the functions of this node. - * - * @return array - */ - public function getFunctions() - { - return $this->functions; - } - - /** - * Returns the LOC/CLOC/NCLOC of this node. - * - * @return array - */ - public function getLinesOfCode() - { - return $this->linesOfCode; - } - - /** - * Returns the number of executable lines. - * - * @return integer - */ - public function getNumExecutableLines() - { - return $this->numExecutableLines; - } - - /** - * Returns the number of executed lines. - * - * @return integer - */ - public function getNumExecutedLines() - { - return $this->numExecutedLines; - } - - /** - * Returns the number of classes. - * - * @return integer - */ - public function getNumClasses() - { - return count($this->classes); - } - - /** - * Returns the number of tested classes. - * - * @return integer - */ - public function getNumTestedClasses() - { - return $this->numTestedClasses; - } - - /** - * Returns the number of traits. - * - * @return integer - */ - public function getNumTraits() - { - return count($this->traits); - } - - /** - * Returns the number of tested traits. - * - * @return integer - */ - public function getNumTestedTraits() - { - return $this->numTestedTraits; - } - - /** - * Returns the number of methods. - * - * @return integer - */ - public function getNumMethods() - { - if ($this->numMethods === NULL) { - $this->numMethods = 0; - - foreach ($this->classes as $class) { - foreach ($class['methods'] as $method) { - if ($method['executableLines'] > 0) { - $this->numMethods++; - } - } - } - - foreach ($this->traits as $trait) { - foreach ($trait['methods'] as $method) { - if ($method['executableLines'] > 0) { - $this->numMethods++; - } - } - } - } - - return $this->numMethods; - } - - /** - * Returns the number of tested methods. - * - * @return integer - */ - public function getNumTestedMethods() - { - if ($this->numTestedMethods === NULL) { - $this->numTestedMethods = 0; - - foreach ($this->classes as $class) { - foreach ($class['methods'] as $method) { - if ($method['executableLines'] > 0 && - $method['coverage'] == 100) { - $this->numTestedMethods++; - } - } - } - - foreach ($this->traits as $trait) { - foreach ($trait['methods'] as $method) { - if ($method['executableLines'] > 0 && - $method['coverage'] == 100) { - $this->numTestedMethods++; - } - } - } - } - - return $this->numTestedMethods; - } - - /** - * Returns the number of functions. - * - * @return integer - */ - public function getNumFunctions() - { - return count($this->functions); - } - - /** - * Returns the number of tested functions. - * - * @return integer - */ - public function getNumTestedFunctions() - { - if ($this->numTestedFunctions === NULL) { - $this->numTestedFunctions = 0; - - foreach ($this->functions as $function) { - if ($function['executableLines'] > 0 && - $function['coverage'] == 100) { - $this->numTestedFunctions++; - } - } - } - - return $this->numTestedFunctions; - } - - /** - * Calculates coverage statistics for the file. - */ - protected function calculateStatistics() - { - if ($this->cacheTokens) { - $tokens = PHP_Token_Stream_CachingFactory::get($this->getPath()); - } else { - $tokens = new PHP_Token_Stream($this->getPath()); - } - - $this->processClasses($tokens); - $this->processTraits($tokens); - $this->processFunctions($tokens); - $this->linesOfCode = $tokens->getLinesOfCode(); - unset($tokens); - - for ($lineNumber = 1; $lineNumber <= $this->linesOfCode['loc']; $lineNumber++) { - if (isset($this->startLines[$lineNumber])) { - // Start line of a class. - if (isset($this->startLines[$lineNumber]['className'])) { - $currentClass = &$this->startLines[$lineNumber]; - } - - // Start line of a trait. - else if (isset($this->startLines[$lineNumber]['traitName'])) { - $currentTrait = &$this->startLines[$lineNumber]; - } - - // Start line of a method. - else if (isset($this->startLines[$lineNumber]['methodName'])) { - $currentMethod = &$this->startLines[$lineNumber]; - } - - // Start line of a function. - else if (isset($this->startLines[$lineNumber]['functionName'])) { - $currentFunction = &$this->startLines[$lineNumber]; - } - } - - if (!isset($this->ignoredLines[$lineNumber]) && - isset($this->coverageData[$lineNumber]) && - $this->coverageData[$lineNumber] !== NULL) { - if (isset($currentClass)) { - $currentClass['executableLines']++; - } - - if (isset($currentTrait)) { - $currentTrait['executableLines']++; - } - - if (isset($currentMethod)) { - $currentMethod['executableLines']++; - } - - if (isset($currentFunction)) { - $currentFunction['executableLines']++; - } - - $this->numExecutableLines++; - - if (count($this->coverageData[$lineNumber]) > 0 || - isset($this->ignoredLines[$lineNumber])) { - if (isset($currentClass)) { - $currentClass['executedLines']++; - } - - if (isset($currentTrait)) { - $currentTrait['executedLines']++; - } - - if (isset($currentMethod)) { - $currentMethod['executedLines']++; - } - - if (isset($currentFunction)) { - $currentFunction['executedLines']++; - } - - $this->numExecutedLines++; - } - } - - if (isset($this->endLines[$lineNumber])) { - // End line of a class. - if (isset($this->endLines[$lineNumber]['className'])) { - unset($currentClass); - } - - // End line of a trait. - else if (isset($this->endLines[$lineNumber]['traitName'])) { - unset($currentTrait); - } - - // End line of a method. - else if (isset($this->endLines[$lineNumber]['methodName'])) { - unset($currentMethod); - } - - // End line of a function. - else if (isset($this->endLines[$lineNumber]['functionName'])) { - unset($currentFunction); - } - } - } - - foreach ($this->traits as &$trait) { - foreach ($trait['methods'] as &$method) { - if ($method['executableLines'] > 0) { - $method['coverage'] = ($method['executedLines'] / - $method['executableLines']) * 100; - } else { - $method['coverage'] = 100; - } - - $method['crap'] = $this->crap( - $method['ccn'], $method['coverage'] - ); - - $trait['ccn'] += $method['ccn']; - } - - if ($trait['executableLines'] > 0) { - $trait['coverage'] = ($trait['executedLines'] / - $trait['executableLines']) * 100; - } else { - $trait['coverage'] = 100; - } - - if ($trait['coverage'] == 100) { - $this->numTestedClasses++; - } - - $trait['crap'] = $this->crap( - $trait['ccn'], $trait['coverage'] - ); - } - - foreach ($this->classes as &$class) { - foreach ($class['methods'] as &$method) { - if ($method['executableLines'] > 0) { - $method['coverage'] = ($method['executedLines'] / - $method['executableLines']) * 100; - } else { - $method['coverage'] = 100; - } - - $method['crap'] = $this->crap( - $method['ccn'], $method['coverage'] - ); - - $class['ccn'] += $method['ccn']; - } - - if ($class['executableLines'] > 0) { - $class['coverage'] = ($class['executedLines'] / - $class['executableLines']) * 100; - } else { - $class['coverage'] = 100; - } - - if ($class['coverage'] == 100) { - $this->numTestedClasses++; - } - - $class['crap'] = $this->crap( - $class['ccn'], $class['coverage'] - ); - } - } - - /** - * @param PHP_Token_Stream $tokens - */ - protected function processClasses(PHP_Token_Stream $tokens) - { - $classes = $tokens->getClasses(); - unset($tokens); - - $link = $this->getId() . '.html#'; - - foreach ($classes as $className => $class) { - $this->classes[$className] = array( - 'className' => $className, - 'methods' => array(), - 'startLine' => $class['startLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => 0, - 'coverage' => 0, - 'crap' => 0, - 'package' => $class['package'], - 'link' => $link . $class['startLine'] - ); - - $this->startLines[$class['startLine']] = &$this->classes[$className]; - $this->endLines[$class['endLine']] = &$this->classes[$className]; - - foreach ($class['methods'] as $methodName => $method) { - $this->classes[$className]['methods'][$methodName] = array( - 'methodName' => $methodName, - 'signature' => $method['signature'], - 'startLine' => $method['startLine'], - 'endLine' => $method['endLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => $method['ccn'], - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $method['startLine'] - ); - - $this->startLines[$method['startLine']] = &$this->classes[$className]['methods'][$methodName]; - $this->endLines[$method['endLine']] = &$this->classes[$className]['methods'][$methodName]; - } - } - } - - /** - * @param PHP_Token_Stream $tokens - */ - protected function processTraits(PHP_Token_Stream $tokens) - { - $traits = $tokens->getTraits(); - unset($tokens); - - $link = $this->getId() . '.html#'; - - foreach ($traits as $traitName => $trait) { - $this->traits[$traitName] = array( - 'traitName' => $traitName, - 'methods' => array(), - 'startLine' => $trait['startLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => 0, - 'coverage' => 0, - 'crap' => 0, - 'package' => $trait['package'], - 'link' => $link . $trait['startLine'] - ); - - $this->startLines[$trait['startLine']] = &$this->traits[$traitName]; - $this->endLines[$trait['endLine']] = &$this->traits[$traitName]; - - foreach ($trait['methods'] as $methodName => $method) { - $this->traits[$traitName]['methods'][$methodName] = array( - 'methodName' => $methodName, - 'signature' => $method['signature'], - 'startLine' => $method['startLine'], - 'endLine' => $method['endLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => $method['ccn'], - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $method['startLine'] - ); - - $this->startLines[$method['startLine']] = &$this->traits[$traitName]['methods'][$methodName]; - $this->endLines[$method['endLine']] = &$this->traits[$traitName]['methods'][$methodName]; - } - } - } - - /** - * @param PHP_Token_Stream $tokens - */ - protected function processFunctions(PHP_Token_Stream $tokens) - { - $functions = $tokens->getFunctions(); - unset($tokens); - - $link = $this->getId() . '.html#'; - - foreach ($functions as $functionName => $function) { - $this->functions[$functionName] = array( - 'functionName' => $functionName, - 'signature' => $function['signature'], - 'startLine' => $function['startLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => $function['ccn'], - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $function['startLine'] - ); - - $this->startLines[$function['startLine']] = &$this->functions[$functionName]; - $this->endLines[$function['endLine']] = &$this->functions[$functionName]; - } - } - - /** - * Calculates the Change Risk Anti-Patterns (CRAP) index for a unit of code - * based on its cyclomatic complexity and percentage of code coverage. - * - * @param integer $ccn - * @param float $coverage - * @return string - * @since Method available since Release 1.2.0 - */ - protected function crap($ccn, $coverage) - { - if ($coverage == 0) { - return (string)pow($ccn, 2) + $ccn; - } - - if ($coverage >= 95) { - return (string)$ccn; - } - - return sprintf( - '%01.2F', pow($ccn, 2) * pow(1 - $coverage/100, 3) + $ccn - ); - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Recursive iterator for PHP_CodeCoverage_Report_Node object graphs. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_Node_Iterator implements RecursiveIterator -{ - /** - * @var integer - */ - protected $position; - - /** - * @var PHP_CodeCoverage_Report_Node[] - */ - protected $nodes; - - /** - * Constructor. - * - * @param PHP_CodeCoverage_Report_Node_Directory $node - */ - public function __construct(PHP_CodeCoverage_Report_Node_Directory $node) - { - $this->nodes = $node->getChildNodes(); - } - - /** - * Rewinds the Iterator to the first element. - * - */ - public function rewind() - { - $this->position = 0; - } - - /** - * Checks if there is a current element after calls to rewind() or next(). - * - * @return boolean - */ - public function valid() - { - return $this->position < count($this->nodes); - } - - /** - * Returns the key of the current element. - * - * @return integer - */ - public function key() - { - return $this->position; - } - - /** - * Returns the current element. - * - * @return PHPUnit_Framework_Test - */ - public function current() - { - return $this->valid() ? $this->nodes[$this->position] : NULL; - } - - /** - * Moves forward to next element. - * - */ - public function next() - { - $this->position++; - } - - /** - * Returns the sub iterator for the current element. - * - * @return PHP_CodeCoverage_Report_Node_Iterator - */ - public function getChildren() - { - return new PHP_CodeCoverage_Report_Node_Iterator( - $this->nodes[$this->position] - ); - } - - /** - * Checks whether the current element has children. - * - * @return boolean - */ - public function hasChildren() - { - return $this->nodes[$this->position] instanceof PHP_CodeCoverage_Report_Node_Directory; - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Represents a directory in the code coverage information tree. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_Node_Directory extends PHP_CodeCoverage_Report_Node implements IteratorAggregate -{ - /** - * @var PHP_CodeCoverage_Report_Node[] - */ - protected $children = array(); - - /** - * @var PHP_CodeCoverage_Report_Node_Directory[] - */ - protected $directories = array(); - - /** - * @var PHP_CodeCoverage_Report_Node_File[] - */ - protected $files = array(); - - /** - * @var array - */ - protected $classes; - - /** - * @var array - */ - protected $traits; - - /** - * @var array - */ - protected $functions; - - /** - * @var array - */ - protected $linesOfCode = NULL; - - /** - * @var integer - */ - protected $numFiles = -1; - - /** - * @var integer - */ - protected $numExecutableLines = -1; - - /** - * @var integer - */ - protected $numExecutedLines = -1; - - /** - * @var integer - */ - protected $numClasses = -1; - - /** - * @var integer - */ - protected $numTestedClasses = -1; - - /** - * @var integer - */ - protected $numTraits = -1; - - /** - * @var integer - */ - protected $numTestedTraits = -1; - - /** - * @var integer - */ - protected $numMethods = -1; - - /** - * @var integer - */ - protected $numTestedMethods = -1; - - /** - * @var integer - */ - protected $numFunctions = -1; - - /** - * @var integer - */ - protected $numTestedFunctions = -1; - - /** - * Returns the number of files in/under this node. - * - * @return integer - */ - public function count() - { - if ($this->numFiles == -1) { - $this->numFiles = 0; - - foreach ($this->children as $child) { - $this->numFiles += count($child); - } - } - - return $this->numFiles; - } - - /** - * Returns an iterator for this node. - * - * @return RecursiveIteratorIterator - */ - public function getIterator() - { - return new RecursiveIteratorIterator( - new PHP_CodeCoverage_Report_Node_Iterator($this), - RecursiveIteratorIterator::SELF_FIRST - ); - } - - /** - * Adds a new directory. - * - * @param string $name - * @return PHP_CodeCoverage_Report_Node_Directory - */ - public function addDirectory($name) - { - $directory = new PHP_CodeCoverage_Report_Node_Directory($name, $this); - - $this->children[] = $directory; - $this->directories[] = &$this->children[count($this->children) - 1]; - - return $directory; - } - - /** - * Adds a new file. - * - * @param string $name - * @param array $coverageData - * @param array $testData - * @param boolean $cacheTokens - * @return PHP_CodeCoverage_Report_Node_File - * @throws PHP_CodeCoverage_Exception - */ - public function addFile($name, array $coverageData, array $testData, $cacheTokens) - { - $file = new PHP_CodeCoverage_Report_Node_File( - $name, $this, $coverageData, $testData, $cacheTokens - ); - - $this->children[] = $file; - $this->files[] = &$this->children[count($this->children) - 1]; - - $this->numExecutableLines = -1; - $this->numExecutedLines = -1; - - return $file; - } - - /** - * Returns the directories in this directory. - * - * @return array - */ - public function getDirectories() - { - return $this->directories; - } - - /** - * Returns the files in this directory. - * - * @return array - */ - public function getFiles() - { - return $this->files; - } - - /** - * Returns the child nodes of this node. - * - * @return array - */ - public function getChildNodes() - { - return $this->children; - } - - /** - * Returns the classes of this node. - * - * @return array - */ - public function getClasses() - { - if ($this->classes === NULL) { - $this->classes = array(); - - foreach ($this->children as $child) { - $this->classes = array_merge( - $this->classes, $child->getClasses() - ); - } - } - - return $this->classes; - } - - /** - * Returns the traits of this node. - * - * @return array - */ - public function getTraits() - { - if ($this->traits === NULL) { - $this->traits = array(); - - foreach ($this->children as $child) { - $this->traits = array_merge( - $this->traits, $child->getTraits() - ); - } - } - - return $this->traits; - } - - /** - * Returns the functions of this node. - * - * @return array - */ - public function getFunctions() - { - if ($this->functions === NULL) { - $this->functions = array(); - - foreach ($this->children as $child) { - $this->functions = array_merge( - $this->functions, $child->getFunctions() - ); - } - } - - return $this->functions; - } - - /** - * Returns the LOC/CLOC/NCLOC of this node. - * - * @return array - */ - public function getLinesOfCode() - { - if ($this->linesOfCode === NULL) { - $this->linesOfCode = array('loc' => 0, 'cloc' => 0, 'ncloc' => 0); - - foreach ($this->children as $child) { - $linesOfCode = $child->getLinesOfCode(); - - $this->linesOfCode['loc'] += $linesOfCode['loc']; - $this->linesOfCode['cloc'] += $linesOfCode['cloc']; - $this->linesOfCode['ncloc'] += $linesOfCode['ncloc']; - } - } - - return $this->linesOfCode; - } - - /** - * Returns the number of executable lines. - * - * @return integer - */ - public function getNumExecutableLines() - { - if ($this->numExecutableLines == -1) { - $this->numExecutableLines = 0; - - foreach ($this->children as $child) { - $this->numExecutableLines += $child->getNumExecutableLines(); - } - } - - return $this->numExecutableLines; - } - - /** - * Returns the number of executed lines. - * - * @return integer - */ - public function getNumExecutedLines() - { - if ($this->numExecutedLines == -1) { - $this->numExecutedLines = 0; - - foreach ($this->children as $child) { - $this->numExecutedLines += $child->getNumExecutedLines(); - } - } - - return $this->numExecutedLines; - } - - /** - * Returns the number of classes. - * - * @return integer - */ - public function getNumClasses() - { - if ($this->numClasses == -1) { - $this->numClasses = 0; - - foreach ($this->children as $child) { - $this->numClasses += $child->getNumClasses(); - } - } - - return $this->numClasses; - } - - /** - * Returns the number of tested classes. - * - * @return integer - */ - public function getNumTestedClasses() - { - if ($this->numTestedClasses == -1) { - $this->numTestedClasses = 0; - - foreach ($this->children as $child) { - $this->numTestedClasses += $child->getNumTestedClasses(); - } - } - - return $this->numTestedClasses; - } - - /** - * Returns the number of traits. - * - * @return integer - */ - public function getNumTraits() - { - if ($this->numTraits == -1) { - $this->numTraits = 0; - - foreach ($this->children as $child) { - $this->numTraits += $child->getNumTraits(); - } - } - - return $this->numTraits; - } - - /** - * Returns the number of tested traits. - * - * @return integer - */ - public function getNumTestedTraits() - { - if ($this->numTestedTraits == -1) { - $this->numTestedTraits = 0; - - foreach ($this->children as $child) { - $this->numTestedTraits += $child->getNumTestedTraits(); - } - } - - return $this->numTestedTraits; - } - - /** - * Returns the number of methods. - * - * @return integer - */ - public function getNumMethods() - { - if ($this->numMethods == -1) { - $this->numMethods = 0; - - foreach ($this->children as $child) { - $this->numMethods += $child->getNumMethods(); - } - } - - return $this->numMethods; - } - - /** - * Returns the number of tested methods. - * - * @return integer - */ - public function getNumTestedMethods() - { - if ($this->numTestedMethods == -1) { - $this->numTestedMethods = 0; - - foreach ($this->children as $child) { - $this->numTestedMethods += $child->getNumTestedMethods(); - } - } - - return $this->numTestedMethods; - } - - /** - * Returns the number of functions. - * - * @return integer - */ - public function getNumFunctions() - { - if ($this->numFunctions == -1) { - $this->numFunctions = 0; - - foreach ($this->children as $child) { - $this->numFunctions += $child->getNumFunctions(); - } - } - - return $this->numFunctions; - } - - /** - * Returns the number of tested functions. - * - * @return integer - */ - public function getNumTestedFunctions() - { - if ($this->numTestedFunctions == -1) { - $this->numTestedFunctions = 0; - - foreach ($this->children as $child) { - $this->numTestedFunctions += $child->getNumTestedFunctions(); - } - } - - return $this->numTestedFunctions; - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Base class for PHP_CodeCoverage_Report_Node renderers. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -abstract class PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @var string - */ - protected $templatePath; - - /** - * @var string - */ - protected $charset; - - /** - * @var string - */ - protected $generator; - - /** - * @var string - */ - protected $date; - - /** - * @var integer - */ - protected $lowUpperBound; - - /** - * @var integer - */ - protected $highLowerBound; - - /** - * Constructor. - * - * @param string $templatePath - * @param string $charset - * @param string $generator - * @param string $date - * @param integer $lowUpperBound - * @param integer $highLowerBound - */ - public function __construct($templatePath, $charset, $generator, $date, $lowUpperBound, $highLowerBound) - { - $this->templatePath = $templatePath; - $this->charset = $charset; - $this->generator = $generator; - $this->date = $date; - $this->lowUpperBound = $lowUpperBound; - $this->highLowerBound = $highLowerBound; - } - - /** - * @param Text_Template $template - * @param array $data - * @return string - */ - protected function renderItemTemplate(Text_Template $template, array $data) - { - $classesBar = ' '; - $classesLevel = 'None'; - $classesNumber = ' '; - - if (isset($data['numClasses']) && $data['numClasses'] > 0) { - $classesLevel = $this->getColorLevel($data['testedClassesPercent']); - - $classesNumber = $data['numTestedClasses'] . ' / ' . - $data['numClasses']; - - $classesBar = $this->getCoverageBar( - $data['testedClassesPercent'] - ); - } - - $methodsBar = ' '; - $methodsLevel = 'None'; - $methodsNumber = ' '; - - if ($data['numMethods'] > 0) { - $methodsLevel = $this->getColorLevel($data['testedMethodsPercent']); - - $methodsNumber = $data['numTestedMethods'] . ' / ' . - $data['numMethods']; - - $methodsBar = $this->getCoverageBar( - $data['testedMethodsPercent'] - ); - } - - $linesBar = ' '; - $linesLevel = 'None'; - $linesNumber = ' '; - - if ($data['numExecutableLines'] > 0) { - $linesLevel = $this->getColorLevel($data['linesExecutedPercent']); - - $linesNumber = $data['numExecutedLines'] . ' / ' . - $data['numExecutableLines']; - - $linesBar = $this->getCoverageBar( - $data['linesExecutedPercent'] - ); - } - - $template->setVar( - array( - 'icon' => isset($data['icon']) ? $data['icon'] : '', - 'crap' => isset($data['crap']) ? $data['crap'] : '', - 'name' => $data['name'], - 'lines_bar' => $linesBar, - 'lines_executed_percent' => $data['linesExecutedPercentAsString'], - 'lines_level' => $linesLevel, - 'lines_number' => $linesNumber, - 'methods_bar' => $methodsBar, - 'methods_tested_percent' => $data['testedMethodsPercentAsString'], - 'methods_level' => $methodsLevel, - 'methods_number' => $methodsNumber, - 'classes_bar' => $classesBar, - 'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '', - 'classes_level' => $classesLevel, - 'classes_number' => $classesNumber - ) - ); - - return $template->render(); - } - - /** - * @param Text_Template $template - * @param PHP_CodeCoverage_Report_Node $node - */ - protected function setCommonTemplateVariables(Text_Template $template, PHP_CodeCoverage_Report_Node $node) - { - $template->setVar( - array( - 'id' => $node->getId(), - 'full_path' => $node->getPath(), - 'breadcrumbs' => $this->getBreadcrumbs($node), - 'charset' => $this->charset, - 'date' => $this->date, - 'version' => PHP_CodeCoverage_Version::id(), - 'php_version' => PHP_VERSION, - 'generator' => $this->generator, - 'low_upper_bound' => $this->lowUpperBound, - 'high_lower_bound' => $this->highLowerBound - ) - ); - } - - protected function getBreadcrumbs(PHP_CodeCoverage_Report_Node $node) - { - $breadcrumbs = ''; - - $path = $node->getPathAsArray(); - - foreach ($path as $step) { - if ($step !== $node) { - $breadcrumbs .= $this->getInactiveBreadcrumb($step); - } else { - $breadcrumbs .= $this->getActiveBreadcrumb( - $step, - $node instanceof PHP_CodeCoverage_Report_Node_Directory - ); - } - } - - return $breadcrumbs; - } - - protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node, $isDirectory) - { - $buffer = sprintf( - '
  • %s
  • ' . "\n", - $node->getName() - ); - - if ($isDirectory) { - $buffer .= sprintf( - '
  • (Dashboard)
  • ' . "\n", - $node->getId() - ); - } - - return $buffer; - } - - protected function getInactiveBreadcrumb(PHP_CodeCoverage_Report_Node $node) - { - return sprintf( - '
  • %s /
  • ' . "\n", - $node->getId(), - $node->getName() - ); - } - - protected function getCoverageBar($percent) - { - $level = $this->getColorLevel($percent); - - $template = new Text_Template( - $this->templatePath . 'coverage_bar.html' - ); - - $template->setVar(array('level' => $level, 'percent' => sprintf("%.2F", $percent))); - - return $template->render(); - } - - /** - * @param integer $percent - * @return string - */ - protected function getColorLevel($percent) - { - if ($percent < $this->lowUpperBound) { - return 'danger'; - } - - else if ($percent >= $this->lowUpperBound && - $percent < $this->highLowerBound) { - return 'warning'; - } - - else { - return 'success'; - } - } -} -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * 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. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -// @codeCoverageIgnoreStart -if (!defined('T_TRAIT')) { - define('T_TRAIT', 1001); -} - -if (!defined('T_INSTEADOF')) { - define('T_INSTEADOF', 1002); -} - -if (!defined('T_CALLABLE')) { - define('T_CALLABLE', 1003); -} -// @codeCoverageIgnoreEnd - -/** - * Renders a PHP_CodeCoverage_Report_Node_File node. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2013 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_HTML_Renderer_File extends PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @var boolean - */ - protected $highlight; - - /** - * Constructor. - * - * @param string $templatePath - * @param string $charset - * @param string $generator - * @param string $date - * @param integer $lowUpperBound - * @param integer $highLowerBound - * @param boolean $highlight - */ - public function __construct($templatePath, $charset, $generator, $date, $lowUpperBound, $highLowerBound, $highlight) - { - parent::__construct( - $templatePath, - $charset, - $generator, - $date, - $lowUpperBound, - $highLowerBound - ); - - $this->highlight = $highlight; - } - - /** - * @param PHP_CodeCoverage_Report_Node_File $node - * @param string $file - */ - public function render(PHP_CodeCoverage_Report_Node_File $node, $file) - { - $template = new Text_Template($this->templatePath . 'file.html'); - - $template->setVar( - array( - 'items' => $this->renderItems($node), - 'lines' => $this->renderSource($node) - ) - ); - - $this->setCommonTemplateVariables($template, $node); - - $template->renderTo($file); - } - - /** - * @param PHP_CodeCoverage_Report_Node_File $node - * @return string - */ - protected function renderItems(PHP_CodeCoverage_Report_Node_File $node) - { - $template = new Text_Template($this->templatePath . 'file_item.html'); - - $methodItemTemplate = new Text_Template( - $this->templatePath . 'method_item.html' - ); - - $items = $this->renderItemTemplate( - $template, - array( - 'name' => 'Total', - 'numClasses' => $node->getNumClassesAndTraits(), - 'numTestedClasses' => $node->getNumTestedClassesAndTraits(), - 'numMethods' => $node->getNumMethods(), - 'numTestedMethods' => $node->getNumTestedMethods(), - 'linesExecutedPercent' => $node->getLineExecutedPercent(FALSE), - 'linesExecutedPercentAsString' => $node->getLineExecutedPercent(), - 'numExecutedLines' => $node->getNumExecutedLines(), - 'numExecutableLines' => $node->getNumExecutableLines(), - 'testedMethodsPercent' => $node->getTestedMethodsPercent(FALSE), - 'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(), - 'testedClassesPercent' => $node->getTestedClassesAndTraitsPercent(FALSE), - 'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent(), - 'crap' => 'CRAP' - ) - ); - - $items .= $this->renderFunctionItems( - $node->getFunctions(), $methodItemTemplate - ); - - $items .= $this->renderTraitOrClassItems( - $node->getTraits(), $template, $methodItemTemplate - ); - - $items .= $this->renderTraitOrClassItems( - $node->getClasses(), $template, $methodItemTemplate - ); - - return $items; - } - - /** - * @param array $items - * @param Text_Template $template - * @return string - */ - protected function renderTraitOrClassItems(array $items, Text_Template $template, Text_Template $methodItemTemplate) - { - if (empty($items)) { - return ''; - } - - $buffer = ''; - - foreach ($items as $name => $item) { - $numMethods = count($item['methods']); - $numTestedMethods = 0; - - foreach ($item['methods'] as $method) { - if ($method['executedLines'] == $method['executableLines']) { - $numTestedMethods++; - } - } - - $buffer .= $this->renderItemTemplate( - $template, - array( - 'name' => $name, - 'numClasses' => 1, - 'numTestedClasses' => $numTestedMethods == $numMethods ? 1 : 0, - 'numMethods' => $numMethods, - 'numTestedMethods' => $numTestedMethods, - 'linesExecutedPercent' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - FALSE - ), - 'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - TRUE - ), - 'numExecutedLines' => $item['executedLines'], - 'numExecutableLines' => $item['executableLines'], - 'testedMethodsPercent' => PHP_CodeCoverage_Util::percent( - $numTestedMethods, - $numMethods, - FALSE - ), - 'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedMethods, - $numMethods, - TRUE - ), - 'testedClassesPercent' => PHP_CodeCoverage_Util::percent( - $numTestedMethods == $numMethods ? 1 : 0, - 1, - FALSE - ), - 'testedClassesPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedMethods == $numMethods ? 1 : 0, - 1, - TRUE - ), - 'crap' => $item['crap'] - ) - ); - - foreach ($item['methods'] as $method) { - $buffer .= $this->renderFunctionOrMethodItem( - $methodItemTemplate, $method, ' ' - ); - } - } - - return $buffer; - } - - /** - * @param array $functions - * @param Text_Template $template - * @return string - */ - protected function renderFunctionItems(array $functions, Text_Template $template) - { - if (empty($functions)) { - return ''; - } - - $buffer = ''; - - foreach ($functions as $function) { - $buffer .= $this->renderFunctionOrMethodItem( - $template, $function - ); - } - - return $buffer; - } - - /** - * @param Text_Template $template - * @return string - */ - protected function renderFunctionOrMethodItem(Text_Template $template, array $item, $indent = '') - { - $numTestedItems = $item['executedLines'] == $item['executableLines'] ? 1 : 0; - - return $this->renderItemTemplate( - $template, - array( - 'name' => sprintf( - '%s%s', - $indent, - $item['startLine'], - htmlspecialchars($item['signature']) - ), - 'numMethods' => 1, - 'numTestedMethods' => $numTestedItems, - 'linesExecutedPercent' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - FALSE - ), - 'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - TRUE - ), - 'numExecutedLines' => $item['executedLines'], - 'numExecutableLines' => $item['executableLines'], - 'testedMethodsPercent' => PHP_CodeCoverage_Util::percent( - $numTestedItems, - 1, - FALSE - ), - 'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedItems, - 1, - TRUE - ), - 'crap' => $item['crap'] - ) - ); - } - - /** - * @param PHP_CodeCoverage_Report_Node_File $node - * @return string - */ - protected function renderSource(PHP_CodeCoverage_Report_Node_File $node) - { - $coverageData = $node->getCoverageData(); - $ignoredLines = $node->getIgnoredLines(); - $testData = $node->getTestData(); - $codeLines = $this->loadFile($node->getPath()); - $lines = ''; - $i = 1; - - foreach ($codeLines as $line) { - $numTests = ''; - $trClass = ''; - $popoverContent = ''; - $popoverTitle = ''; - - if (!isset($ignoredLines[$i]) && isset($coverageData[$i])) { - $numTests = count($coverageData[$i]); - - if ($coverageData[$i] === NULL) { - $trClass = ' class="warning"'; - } - - else if ($numTests == 0) { - $trClass = ' class="danger"'; - } - - else { - $trClass = ' class="success popin"'; - $popoverContent = '
      '; - - if ($numTests > 1) { - $popoverTitle = $numTests . ' tests cover line ' . $i; - } else { - $popoverTitle = '1 test covers line ' . $i; - } - - foreach ($coverageData[$i] as $test) { - switch ($testData[$test]) { - case 0: { - $testCSS = ' class="success"'; - } - break; - - case 1: - case 2: { - $testCSS = ' class="warning"'; - } - break; - - case 3: { - $testCSS = ' class="danger"'; - } - break; - - case 4: { - $testCSS = ' class="danger"'; - } - break; - - default: { - $testCSS = ''; - } - } - - $popoverContent .= sprintf( - '%s', - - $testCSS, - htmlspecialchars($test) - ); - } - - $popoverContent .= '
    '; - } - } - - if (!empty($popoverTitle)) { - $popover = sprintf( - ' data-title="%s" data-content="%s" data-placement="bottom" data-html="true"', - $popoverTitle, - htmlspecialchars($popoverContent) - ); - } else { - $popover = ''; - } - - $lines .= sprintf( - ' %s' . "\n", - $trClass, - $popover, - $i, - $i, - $i, - !$this->highlight ? htmlspecialchars($line) : $line - ); - - $i++; - } - - return $lines; - } - - /** - * @param string $file - * @return array - */ - protected function loadFile($file) - { - $buffer = file_get_contents($file); - $lines = explode("\n", str_replace("\t", ' ', $buffer)); - $result = array(); - - if (count($lines) == 0) { - return $result; - } - - $lines = array_map('rtrim', $lines); - - if (!$this->highlight) { - unset($lines[count($lines)-1]); - return $lines; - } - - $tokens = token_get_all($buffer); - $stringFlag = FALSE; - $i = 0; - $result[$i] = ''; - - foreach ($tokens as $j => $token) { - if (is_string($token)) { - if ($token === '"' && $tokens[$j - 1] !== '\\') { - $result[$i] .= sprintf( - '%s', - - htmlspecialchars($token) - ); - - $stringFlag = !$stringFlag; - } else { - $result[$i] .= sprintf( - '%s', - - htmlspecialchars($token) - ); - } - - continue; - } - - list ($token, $value) = $token; - - $value = str_replace( - array("\t", ' '), - array('    ', ' '), - htmlspecialchars($value) - ); - - if ($value === "\n") { - $result[++$i] = ''; - } else { - $lines = explode("\n", $value); - - foreach ($lines as $jj => $line) { - $line = trim($line); - - if ($line !== '') { - if ($stringFlag) { - $colour = 'string'; - } else { - switch ($token) { - case T_INLINE_HTML: { - $colour = 'html'; - } - break; - - case T_COMMENT: - case T_DOC_COMMENT: { - $colour = 'comment'; - } - break; - - case T_ABSTRACT: - case T_ARRAY: - case T_AS: - case T_BREAK: - case T_CALLABLE: - case T_CASE: - case T_CATCH: - case T_CLASS: - case T_CLONE: - case T_CONTINUE: - case T_DEFAULT: - case T_ECHO: - case T_ELSE: - case T_ELSEIF: - case T_EMPTY: - case T_ENDDECLARE: - case T_ENDFOR: - case T_ENDFOREACH: - case T_ENDIF: - case T_ENDSWITCH: - case T_ENDWHILE: - case T_EXIT: - case T_EXTENDS: - case T_FINAL: - case T_FOREACH: - case T_FUNCTION: - case T_GLOBAL: - case T_IF: - case T_IMPLEMENTS: - case T_INCLUDE: - case T_INCLUDE_ONCE: - case T_INSTANCEOF: - case T_INSTEADOF: - case T_INTERFACE: - case T_ISSET: - case T_LOGICAL_AND: - case T_LOGICAL_OR: - case T_LOGICAL_XOR: - case T_NAMESPACE: - case T_NEW: - case T_PRIVATE: - case T_PROTECTED: - case T_PUBLIC: - case T_REQUIRE: - case T_REQUIRE_ONCE: - case T_RETURN: - case T_STATIC: - case T_THROW: - case T_TRAIT: - case T_TRY: - case T_UNSET: - case T_USE: - case T_VAR: - case T_WHILE: { - $colour = 'keyword'; - } - break; - - default: { - $colour = 'default'; - } - } - } - - $result[$i] .= sprintf( - '%s', - - $colour, - $line - ); - } - - if (isset($lines[$jj + 1])) { - $result[++$i] = ''; - } - } - } - } - - unset($result[count($result)-1]); - - return $result; - } -} -
    -
    -
    -PNG - - IHDRtEXtSoftwareAdobe ImageReadyqe<1IDATx}ml\EW^ɺD$|nw';vю8m0kQSnSV;1KGsԩ>UoTU1cƖYuּca&#C,pؚ>kں ULW --sn3Vq~NocI~L{- H8%_M£wB6EW,ĢpY2+(Y@&A/3kXhߍ-aA<>P'\J;(}#Qz:4%m?nfntK*l9J+DIYu1YZ^(]YYEf@ОlXz]Ut u &5-PW}@t|#LY=s܂,w#+R+?Ƌax X0"ea)tG*ԡwVwV^rf%xB(qּ4>WG#lWU<ЁXJVѶlR$kDVrI7:X%X1NEzw;y9z9O%~~uɗ*=Ixcy}Y(ou -±N$^j e\iX񝜬];Y-rѲ&>!zlYaVHVN԰9=]=mRMdOUC JUiT}rWW'ڹu)ʢF"YU#P׾&ܑЅROwyzm$Os? +^FTIEq%&~ >M}]ԖwA? -[Nteexn(措BdMTpʥnqqS?bWXmW6x*{V_!VjΧsVL^j XkQjU6sk̩n~[qǸ-` O:G7l"ksRe2vQ=QƼJUX`gQy~ ďKȰE]#P:td\T/u;س:Jc-%'e q -?j"/yh48Zi1|JUu>_N;hxwNU JQU7\j̮bT:B?6oJ1Ί%I -UY-Ii4{=rǤ7@)HKJ+f4X8Cd?'j1 N< 39EWo VTGzg# -%D0#ܠ3[tiآ( U,]125|Ṋfw7w u+Š]Db]K xbW ՛7|ВX㕛{UcGXk¬|(h)IUa)lp 3luPU]D)/7~4Wt5J}V -X0z VM;>Gԙ^|gF:jaZ^)74C#jwr,еSlGu;1vm><)}ZQՖ&mZ:1UMB~ -a:/᜗:KWWOҠ&Y2f7cƌ3f̘1cƌ3f̘1cƌ3f̘1cƌ3f̘g*3fF5LbN2#Tf=C`!ZGUe꣇e2V<1mkS4iϗ*.{N8Xaj~ڀnAx,%fE:|YDVj -¢lg6(:k~MM5?4 ]WO>诋WZiG|QGJeK[YcյpmjE\f/ǎ8&OQ3 .3tt2'-V8pXSrY#J!Q ",ub@FK:u^iy[]<.Cw+W\)b -kr-.MtڀMqʄ۰#$^X$"V`T4m~w%Pp1|+&UxY8*r8:k7QЃҀT$Ўƙ -S>~Sjs:5q.w&_Z.X=:ވbw` _kd{'0:ds#qi!224nq\9-KUTsSUuVo@;Uz>^=Np>oPO -@I@'Gj5o*U>^*ew>ͫʧ᫠Q5 ̈́<$#5Jٻj6e)_ d]2B:^(*:8JYS鬆Kݗ ]U4_rj{5ׇaǑ/yV?GtGb@xPU7O3|鍪 IQ5QGw *(;wf0*PUU<YƔvbt5{2!,}Ҧ:)j2OkΪ' ֊0I.q\(%ojQĖՇa<ԍexAgt'[d;׸`rcdjPFU$UeJI6T&Z}z(z vfuz {}ۿߝݞlxUZ謊.Y岟b%nw@ǩS9|źs%>_o#9\EU~/ځt(r[QZuOo;!MrU]0TcpDő?.cPuF;L_Sb}R/J_+h2$ai UǩS9>Є}76rzu~国4oĨ -1J -^̘~iC޸55G׹]gwsn zTuO=?/zƲc>Οb#7ֻcgkޛTUj*-T=]uu}>ݨNЭ [ ]:%/_ Sz]6D.mD7Uƌ3f̘1cƌ3f̘1cƌ3f̘1cƌ3f̘1cƌ3f̘1c>J4hPP+A;'G_XKmL5I.},wFFum$S-E-;Õ -C3I-`BRx1ғTJݕ;hΊ8 DYJo;Yš5MKɰM;%Pd9KhnD[zgVh,'C -p!^M(WK2X>UQ%^p8 ˽^#Ζ؄+.@gCz%ɔ-Pr -KX -n>=ՔѨeSvRLz5%9UQS \WիK'hp)ô -Jrh M0F (f_R5///G+x 1"eS 5 -:Tf=+7Qɧ\TEs༬rYs8&k#pSՊ5MTbD܊[Ng5Q\s5PB@[8ɨV1&4Wsy[Ǿ -wU2V77jމd^~YfC_h;a.&M -i UWpzs`>/"'OI۲y:BzdTq£=йb:"m/-/PWDQǴ͐57m`H%AV!Hԛ׿@"Qzދ|ߒT-*OU^Ҧ6!Cwk|h&Hd5LEYy'ƣ7%*{=)Z%ٝP *G]/8Lw$?8M)\į/#7Ufd7'6\h1 -vIfEIr=1w\WKVZHKgZ͡$mx % `j}TuTQJZ*H>*QxkLFTyU-)ôbiA|q`F'+ 4^Qy xH)#t^?@]^`ARSqjgB:rK۷l<2-4YKhgQLxVwP~M Φ0l 3ƅaŊITȀhwJmxIMչ|U7xˆS~2ߕ?kW1kC3];YnSґAeXYz8,'x< k7Kx]$x$vgT#w;o@ z_Vmn|HֵhZg-^TAn- )@4[*9xKƋj>!,Vt:eqn8%ohS(2\Q^aigF3vTUDVlQꅧWc%Ueq4ҝº/U $_Q!>t| ,țG<tC[xTXmf|Q%d#jUՆ|; H[bά#,Ws7NT1~m&ǻ{' \㟾 bBKJo8%!$Qj:/RX)$Sy޳ 䍧RDUg_D軦J\jN֖SU;~?Ohssdƣ}6(T <_4b5 ^N N%8QejF7toMyө`)g[/|?өJuGL坕/=CTܠhdifHcǞG4,`D՞{'xG_p/5@m +$jVH3a"*ũ,,HJҵȸT^Qyo&IÉJUVwWLeM~3tA6rwɤ6տ \0HL%LX5c@HHÃZ|NV+7WM{cig*ȸU7iÉбzd * ?gtX8̝OX:]2ɍ]p^++>AVڛE{ DB.&/56ArxY#ܕy)cKQtȪ~! ;C}ʃtf{6$NVsj wupZ)zŁ|-wg+nMVj/d+U~ͯi:_ix whqr>駃-x뼬)ݷyR=! ì:J/lIkV@n74758Z KJ(Uxz1w)^\ԣzȪ󲦨c2f؍v+6f̘1cƌ3f̘1cƌ3f̘1cƌ3f̘1cƌ3f̘2N oC\F1ִ UZJV̚\4Mgq1z{&YT -,HX~D u\g}x>+YdN̮ol ZX+F[/j+S~2/jV8Jr^ԉ]J}J*ۏ<2԰&JݣjOM@ѯ#0O[SXB^ uze\]dd./xXE -f'vO_H${%;kt7ށmő|d{aފ^ǛڎE5ʋBr]W=_SAf(0 oU5q ,_\luz˪uz㻲o=Yi~| -0+=VJت /ލzM\zCL[U:|k*^8"\Wٚ\ .XTjX5 SkFu\1 q'mģ/QUؕ*AɽDNZ׮?_[# ˍ4:^j|5LG ||øBW{6[uQF.1$qF9IHg)\5>C#uXZ$#*<ߐsRv1Tj>Jm>*#( -[Fhsש5*jQʼ&&&P犛L[Q1* ;X}Iΰ[Q?qQZ Hݙ֞VEsBCZ9JTK tup˷ /O,.kUdsOHMg4=-)+ؿh2Nw/r|WQn=GIU;'j,vfdzpe$V GTYsBZO1pj:r"nTUSCgr veAۘ˜FC+Ֆ#[JTe'v9-3 Dmӻuuz?0 o hxuY &_54=f07kלU0]D:jdw/+PGUVS<\2uatc^zYRąmC+7#,|:iNw*|^sm|X>Ъ^1\#͹ &%{,2U>ݎ.c05z# -ogNO+Q쓭 ,˗-%K\[S_`y+b_94"U+Ύap}I[M,B.NtwHj漬E L߀ 0DX(kڵ NoU{gquz -RwkէRx'uZ[3'zyyד%sƕ3jYF\s=m1&VAɼ?k\+]6yモ1gtOIW7al|1 >$]e 7؝WIe?ަL#>| -ҭ] -pM5MUdI61ԠeǼYGhOn3խR:^k_'Yuuq#p# -J2xl>OjcY馃!ڡ+sZ/ D}2AY mpc#<'xSKx`*W[,e|6BH)㶤kjpDU(2qzx9*tqa/, - Z[ 0>Ө֜xN)fă@qըFU՝w(a;ˋ>|Tc|w2eiT]*!_\WG{ - ]^݅Z5t|6oYHaO@= my^akE.uz]#٥hWv(:,6A߉JFa\ wWex>vetuMYA>).,;ɦCbwjE)W Fӫ@s4e6^Q9oI}4x<.B?B߫#$Hx.x9,a!RTpgd5xBe.L7@* -AsduttSVUaRU|I xG߃$T񭟬#_IFMŒ_X@foQIDII?|%$r {ENĸwޕqq?Dؽ}}o/`ӣCTi /ywO rD 9YUD] Ή@s]+'UaL} hrU'7:sU|k)H@hNq#ϵ8y˭Xű#w -1!흉R'7fuד0p!WÖW+Nmp\-ioD$g٠˅%%ÐmV]̱rw*Z}y+L -Nouj}xt)lStuqxmNyKUOnDbhf}k>6ufT%{ <񐮸mjFcmUïc;w8@dGFUA& =nq5]iP}z:k⼶-ʓ Κl*'UzaxWFdZzTNRs+# wzgi:MBqtM l#^'Gߣ*^t{=rERnQ$adJl02%Tڊ^<~g?Of*U^?:N+o[PUs|QR']V-L)H K䐞 mYn\4}YVD hR;g-'3aסM Dh}1cƌ3f̘1cƌ3f̘1cƌ3f̘1cƌ3f̘1cƌk*Ț4`L$b U4\dt'>HȄ|.+Y+/Gy2OCWv3v,'kia W O6߯E=Hv -$LlxI躍/}^]x\3 ɮ5 QT&G9Ay^i}O[5ޱwq4,s JJI.myE^%'VB~dׯ}*j* ~uTk\fKЬ*Y]_v'I˨鑩6Xo'j&uɧngT]oڌ9\*wVHӖ| >:5EF'J ɝ`!A -e~_;5ױϊ镋m_&OVi<}"靍hW9X6KPƣ G"ƭ?/O^hCHLciPj)}QQզ#tMg9 xGw~d;_J+RỲ<;e 5/Qs/5N[!a+NPb+ѺI}-t_qU=MKʞY5no*vvbʊ{]| ~ Z{-끇^FVviϵ3Ya=6ndS;-ʹ^;uꪪ^ |=_w+"i&4l#wir|W3U$"J~O@]~tRJVMHw:̦@?>O?vdrtS*$&~1>Z}^nL(]f*&*QaIꝄ|3*O?r?*4Gyz[k/tkQϖWCCKk/x5|S*`ϹγQEwy -o KYqTb$-/PtsZNKQ*>ݢU@Џ"JQ;¹& -Lx;+T /+O赟> (T?ķD^N*'p$IW֐W~ =J|_UTe7ְP`;CYjk=sU[mߙ-;};2|wo1p0~>0m -@Jrǟcٷ4͜?q\UUIV?2L/+Шꄾ< ܇^T ?tj\JrҀB*=km X,n}aՒIadp׷ll{\6v8RꅟҲf1F|Տ;e=\D ,D:ψrxQT◎*|{nS -9~=}ӕG~%j:Dj<ឫ:jO% -$T8!jvm|'OЗ¹➱z\vsIv`Ȕʨj-^$-^G Q{m`T#c֞㸝|n.ߪN$O JUVʼt,jg-mסּNV z:(Ι*|1Ux=Yk*t MNNDUhK ؞X(刄Rv!#B_cxRŹoE5Dg>?fXQQ˔|@"աMveC>mO$H#]Y I=)_`k* -:a>!X!W^wҒl'<;vwgIt_?Jh`#E:fdx=6Wu<Ӌd2di˂c#h¬c4?<HFYoVpN;ݷJ\ >` (t3{>⦊;;qFx4YcS$w.da*k|Q,+xs^K߫P^nO֮L5mIwl?-.ʲJ8 F B.-:2Ȕ!/A#b_m%I($|PZ[1G{^#o>3mw?'cx[^:Wk/`'=~֥W(gQbfv7UzM3+؍K:4|GCtA+Kʨ{@Ɩ [05E|yn4MIENDB`PNG - - IHDRӳ{PLTEmmmⰰᒒttt󻻻bbbeeeggg𶶶xxx󛛛Ƽ몪֢UUU鿿rOtRNS#_ -/oS?C kDOS_6>4!~a @1_'onҋM3BQjp&%!l"Xqr; A[<`am}43/0IPCM!6(*gK&YQGDP,`{VP-x)h7e1]W$1bzSܕcO]U;Zi'y"؆K 64Y*.v@c.};tN%DI !ZЏ5LH26 ɯ" -bE,,)ʏ B>mn6pmRO -wm@V#?'CȑZ#qb|$:)/E%nRqChn%i̓}lm -?idd",`H"r.z~(bQU&)5X#EMR<*p[[%.Ọk7lIoJF lV!̡ăuH`&,zRk$|$lXbjߪdU?Σ$HW$U'HE3*խU\}( -zhVk}guRk$%|T|ck獳"D_W+.Q)@ƽHbslTDR2Xm#a 3lYzj㒚#! 4J8(cvt]aT D ΅Q?^-_^$:\V $N|=(vZ'q6Z׆B5V!y3K㱿bv4xR]al!IoP@tVyL٪mlڿIUb|[*lke'*WddDӝ}\W_WߝrN?vޫ۲X%0uoui*JVƦb%}i5IYlNE-wςf_W3mI-mQ)S kTC7m<"܌bT|'$ҘR&>O p6tSN\ׯLm\r@3uT -b7t.5.q3r0=8TiJ\6uF -R32^'ŪxI F8O{%8kJMSȴdBEdWCYO:/ON/I_=xFE! =i:o~ y?''[͓[͓[͓[͓[ͭ.U>$PƦc%]\c:| ,eSZ,oXrX!R@Zv 0>?* <|N60;{ad2v+D^t[q!۞V}fۨϏYeॗ)Vyl|" fUq@Ǽ4Y-Y-!6aB:o%JIUQ|UKO`=\ :0x Pau@!KPdxhw1>$j΍vZdxSUA&[URd7øzk/rU^w:I.VǮc>q.!zSr&2)Wg R -iQ 8Pa\ОU%iݡU_=p Lu(N?0?Æ:]άtB%U|NsorNf ,P !v" -Y6hL_@@bscqgv4||0lϟ$S9bʱj#~?o}}7sAPm:IV=n -!{{hEࢪ8suoLT$;VscqD3 ༂3.DBB4&V' T `D6Ϸqyj8V*X%@s\jrN$|=5Ά 'mUiKi%CI:ssaƅ`*`=l)>u՘MeuSI_OL_}o&jzp{lu:O)s%Q@$<]f xO%PCbhr2PKpf5Në3^o]eJiB464^tuٲU֌:G4'22YpuG'/Py4?.SBP_>I 1t3ΓBɭɭɭɭVVVVVs]!67(g y@ 4>Q VF}^Xׇڼje26 L%YGh lC})< -!EEPZWZV+@†R 5{@ouɐ4&H6ey V݀VťcqZޒrJyByFzFN$Hb*+jՏqэ ګkݿUXle1d0d^-B%} {Y%r*j5Ak5u",:~ҸY~ -hSA~6 fulՇf{ȵQtATHZkƭ/_Sn -u']b]|m`BāJ,O$du]Zs FL:aǙT4o~by?wpj滥A(x]†f~an֧/^dڲcՇ,!1i&xi_VK@ip̓9Vi%a; L?0J*Ū5U'x^6V[^ {eU|:0=0d۫o*Jq%[YN.sQLud[29I:WnmXlڃ6!lNlVէKUjV\J%UߊBLcKfb>a=b~R]aG%[js@/9MطݘU>yɲX@} Ftg^vO\Ӹwvpz3K5i!$P>ā'VƛL2r@UMKZ6tw맟¦bm1h||]}~0MjA(JJP68C&yr׉e}j_cJ?I0k>šW |Bޝ."TEXd 8!cw*E(J)![W"j_ТeX_XB;oO0~?:PC (.[!Wq%*leY)E<^KZT60.#A\5;Rmtkd/8)5~^0 #Ckgey)ͶԺ6ĥ<(?&uAVm0^h.txR*a':,H|ō l5z;8+e#b'#|}2w(|KcJ l6 w^Տoi3H R ̔9,YgPְ:N [5SR![)]i}`mN4Хv`|;f(FltL8÷Z#AO%Y)NU5YedJE3dZذݣHT1 ;8MjnʏӤqp 1h^<<>yt{?|'j)}YUU{@V/J1F+7䀉[OWO[ yUY!?BD%DWj>-Ai6xz)U R7 d@g\so)a4zf[W+> P> -|qLG8vȣlj2Zt+VA6gT *ʆUz(m)CD `He/.:zN9pgo &NC׃އ>Wհ_Hj)Xe6F7pm-`'c.AZ=^e8F;{Rtn(z!S7o -Iew3]bܗ85|iϠRJkʱZRO+8U&:]ZieR(JMޗ7Z@5a^\GzsρU*rMezT^:ɬͦX=>$ -bi>U&XQoybbGk8 -Ҙn).Սo ^MmdZi$soo*{4eLbLٳ""mx:`:mk[geTެ)'0*TB{!I ''''[͓[͓[͓[͓[]Zj Q.e '/yvQ71(Z&X?(_Z){tڀmZWϏ)-C jqn,̋"IvUL!h꛿skAcrN佚фVE40yX~4zʸV㳰%,)fqtpu~  *^0:ܲ33JO(ZB?K^ v]unlWi0p6[착C_5X#[wX3b廫R{NKAe Se|wxso>P\儔ԕ6;nVmfI$V͓J-J%֌0UwYЎSnum藮xz˗VƫIvnW_qLZ"_Xz 8]Ap?C543zw({7e*Ȳ`۰!AQ:KUnz]1yVGaCm0PY -ٚUx6TT&hV9V -ӬzÑ 1[XzZ9erqJND/gX*9oN6D` {I%Mz9—TQ7f\"j_3~xB'ܷY]*KЌ%"5"qxq~ƕ=jS>jV&~]2xzF1X_yD<#NRB}K/iy !V^˿eJ}/FkA7 S+.(ecJ:zWZ몖wQ~ä́p6,e5,+,tv%O^OO}ן -O7>ekC6wa_C |9*WA)UJg8=:mjUvqysܒLglC6+[FSWg9wV31A ND<$5e(s[ ۨbaF.]KIENDB` - {name} - {classes_bar} -
    {classes_tested_percent}
    -
    {classes_number}
    - {methods_bar} -
    {methods_tested_percent}
    -
    {methods_number}
    - {crap} - {lines_bar} -
    {lines_executed_percent}
    -
    {lines_number}
    - - - - - - - Code Coverage for {full_path} - - - - - - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - - - - - - - - - - - - - -{items} - -
     
    Code Coverage
     
    Lines
    Functions and Methods
    Classes and Traits
    -
    -

    Legend

    -

    - Low: 0% to {low_upper_bound}% - Medium: {low_upper_bound}% to {high_lower_bound}% - High: {high_lower_bound}% to 100% -

    -

    - Generated by PHP_CodeCoverage {version} using PHP {php_version}{generator} at {date}. -

    -
    -
    - - - -/*! - * Bootstrap v2.2.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover{color:#808080}.text-warning{color:#c09853}a.text-warning:hover{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover{color:#2d6987}.text-success{color:#468847}a.text-success:hover{color:#356635}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success td{background-color:#dff0d8}.table tbody tr.error td{background-color:#f2dede}.table tbody tr.warning td{background-color:#fcf8e3}.table tbody tr.info td{background-color:#d9edf7}.table-hover tbody tr.success:hover td{background-color:#d0e9c6}.table-hover tbody tr.error:hover td{background-color:#ebcccc}.table-hover tbody tr.warning:hover td{background-color:#faf2cc}.table-hover tbody tr.info:hover td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999}.dropdown-menu .disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #bbb;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#c5c5c5;border-color:rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-3px}.tooltip.right{margin-left:3px}.tooltip.bottom{margin-top:3px}.tooltip.left{margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media .pull-left{margin-right:10px}.media .pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} -/*! - * Bootstrap Responsive v2.2.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */@-ms-viewport{width:device-width}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} -body { - padding-top: 10px; -} - -.popover { - width: 600px; -} - -.table td { - padding-top: 3px; - padding-bottom: 3px; -} - -.table-condensed td { - padding-top: 0; - padding-bottom: 0; -} - -.table .progress { - margin-bottom: inherit; -} - -.table-borderless th, .table-borderless td { - border: 0 !important; -} - -.table tbody td.success, li.success, span.success { - background-color: #dff0d8; -} - -.table tbody tr.danger, .table tbody td.danger, li.danger, span.danger { - background-color: #f2dede; -} - -.table tbody td.warning, li.warning, span.warning { - background-color: #fcf8e3; -} - -.table tbody td.info { - background-color: #d9edf7; -} - -td.big { - width: 100px; -} - -td.small { -} - -td.codeLine { - font-family: monospace; - white-space: pre; -} - -td span.comment { - color: #888a85; -} - -td span.default { - color: #2e3436; -} - -td span.html { - color: #888a85; -} - -td span.keyword { - color: #2e3436; - font-weight: bold; -} - -pre span.string { - color: #2e3436; -} - -span.success, span.warning, span.danger { - margin-right: 2px; - padding-left: 10px; - padding-right: 10px; - text-align: center; -} - -#classCoverageDistribution, #classComplexity { - height: 200px; - width: 475px; -} - - {icon}{name} - {lines_bar} -
    {lines_executed_percent}
    -
    {lines_number}
    - {methods_bar} -
    {methods_tested_percent}
    -
    {methods_number}
    - {classes_bar} -
    {classes_tested_percent}
    -
    {classes_number}
    - - - - {name} - {methods_bar} -
    {methods_tested_percent}
    -
    {methods_number}
    - {crap} - {lines_bar} -
    {lines_executed_percent}
    -
    {lines_number}
    - - - - - - - Code Coverage for {full_path} - - - - - - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - - - - - - - - - - - - - -{items} - -
     
    Code Coverage
     
    Classes and Traits
    Functions and Methods
    Lines
    - - -{lines} - -
    - -
    - - - - - -/*! -* Bootstrap.js by @fat & @mdo -* Copyright 2012 Twitter, Inc. -* http://www.apache.org/licenses/LICENSE-2.0.txt -*/ -!function($){"use strict";$(function(){$.support.transition=function(){var transitionEnd=function(){var name,el=document.createElement("bootstrap"),transEndEventNames={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(name in transEndEventNames)if(void 0!==el.style[name])return transEndEventNames[name]}();return transitionEnd&&{end:transitionEnd}}()})}(window.jQuery),!function($){"use strict";var dismiss='[data-dismiss="alert"]',Alert=function(el){$(el).on("click",dismiss,this.close)};Alert.prototype.close=function(e){function removeElement(){$parent.trigger("closed").remove()}var $parent,$this=$(this),selector=$this.attr("data-target");selector||(selector=$this.attr("href"),selector=selector&&selector.replace(/.*(?=#[^\s]*$)/,"")),$parent=$(selector),e&&e.preventDefault(),$parent.length||($parent=$this.hasClass("alert")?$this:$this.parent()),$parent.trigger(e=$.Event("close")),e.isDefaultPrevented()||($parent.removeClass("in"),$.support.transition&&$parent.hasClass("fade")?$parent.on($.support.transition.end,removeElement):removeElement())};var old=$.fn.alert;$.fn.alert=function(option){return this.each(function(){var $this=$(this),data=$this.data("alert");data||$this.data("alert",data=new Alert(this)),"string"==typeof option&&data[option].call($this)})},$.fn.alert.Constructor=Alert,$.fn.alert.noConflict=function(){return $.fn.alert=old,this},$(document).on("click.alert.data-api",dismiss,Alert.prototype.close)}(window.jQuery),!function($){"use strict";var Button=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.button.defaults,options)};Button.prototype.setState=function(state){var d="disabled",$el=this.$element,data=$el.data(),val=$el.is("input")?"val":"html";state+="Text",data.resetText||$el.data("resetText",$el[val]()),$el[val](data[state]||this.options[state]),setTimeout(function(){"loadingText"==state?$el.addClass(d).attr(d,d):$el.removeClass(d).removeAttr(d)},0)},Button.prototype.toggle=function(){var $parent=this.$element.closest('[data-toggle="buttons-radio"]');$parent&&$parent.find(".active").removeClass("active"),this.$element.toggleClass("active")};var old=$.fn.button;$.fn.button=function(option){return this.each(function(){var $this=$(this),data=$this.data("button"),options="object"==typeof option&&option;data||$this.data("button",data=new Button(this,options)),"toggle"==option?data.toggle():option&&data.setState(option)})},$.fn.button.defaults={loadingText:"loading..."},$.fn.button.Constructor=Button,$.fn.button.noConflict=function(){return $.fn.button=old,this},$(document).on("click.button.data-api","[data-toggle^=button]",function(e){var $btn=$(e.target);$btn.hasClass("btn")||($btn=$btn.closest(".btn")),$btn.button("toggle")})}(window.jQuery),!function($){"use strict";var Carousel=function(element,options){this.$element=$(element),this.options=options,"hover"==this.options.pause&&this.$element.on("mouseenter",$.proxy(this.pause,this)).on("mouseleave",$.proxy(this.cycle,this))};Carousel.prototype={cycle:function(e){return e||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval($.proxy(this.next,this),this.options.interval)),this},to:function(pos){var $active=this.$element.find(".item.active"),children=$active.parent().children(),activePos=children.index($active),that=this;if(!(pos>children.length-1||0>pos))return this.sliding?this.$element.one("slid",function(){that.to(pos)}):activePos==pos?this.pause().cycle():this.slide(pos>activePos?"next":"prev",$(children[pos]))},pause:function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&$.support.transition.end&&(this.$element.trigger($.support.transition.end),this.cycle()),clearInterval(this.interval),this.interval=null,this},next:function(){return this.sliding?void 0:this.slide("next")},prev:function(){return this.sliding?void 0:this.slide("prev")},slide:function(type,next){var e,$active=this.$element.find(".item.active"),$next=next||$active[type](),isCycling=this.interval,direction="next"==type?"left":"right",fallback="next"==type?"first":"last",that=this;if(this.sliding=!0,isCycling&&this.pause(),$next=$next.length?$next:this.$element.find(".item")[fallback](),e=$.Event("slide",{relatedTarget:$next[0]}),!$next.hasClass("active")){if($.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(e),e.isDefaultPrevented())return;$next.addClass(type),$next[0].offsetWidth,$active.addClass(direction),$next.addClass(direction),this.$element.one($.support.transition.end,function(){$next.removeClass([type,direction].join(" ")).addClass("active"),$active.removeClass(["active",direction].join(" ")),that.sliding=!1,setTimeout(function(){that.$element.trigger("slid")},0)})}else{if(this.$element.trigger(e),e.isDefaultPrevented())return;$active.removeClass("active"),$next.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return isCycling&&this.cycle(),this}}};var old=$.fn.carousel;$.fn.carousel=function(option){return this.each(function(){var $this=$(this),data=$this.data("carousel"),options=$.extend({},$.fn.carousel.defaults,"object"==typeof option&&option),action="string"==typeof option?option:options.slide;data||$this.data("carousel",data=new Carousel(this,options)),"number"==typeof option?data.to(option):action?data[action]():options.interval&&data.cycle()})},$.fn.carousel.defaults={interval:5e3,pause:"hover"},$.fn.carousel.Constructor=Carousel,$.fn.carousel.noConflict=function(){return $.fn.carousel=old,this},$(document).on("click.carousel.data-api","[data-slide]",function(e){var href,$this=$(this),$target=$($this.attr("data-target")||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,"")),options=$.extend({},$target.data(),$this.data());$target.carousel(options),e.preventDefault()})}(window.jQuery),!function($){"use strict";var Collapse=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.collapse.defaults,options),this.options.parent&&(this.$parent=$(this.options.parent)),this.options.toggle&&this.toggle()};Collapse.prototype={constructor:Collapse,dimension:function(){var hasWidth=this.$element.hasClass("width");return hasWidth?"width":"height"},show:function(){var dimension,scroll,actives,hasData;if(!this.transitioning){if(dimension=this.dimension(),scroll=$.camelCase(["scroll",dimension].join("-")),actives=this.$parent&&this.$parent.find("> .accordion-group > .in"),actives&&actives.length){if(hasData=actives.data("collapse"),hasData&&hasData.transitioning)return;actives.collapse("hide"),hasData||actives.data("collapse",null)}this.$element[dimension](0),this.transition("addClass",$.Event("show"),"shown"),$.support.transition&&this.$element[dimension](this.$element[0][scroll])}},hide:function(){var dimension;this.transitioning||(dimension=this.dimension(),this.reset(this.$element[dimension]()),this.transition("removeClass",$.Event("hide"),"hidden"),this.$element[dimension](0))},reset:function(size){var dimension=this.dimension();return this.$element.removeClass("collapse")[dimension](size||"auto")[0].offsetWidth,this.$element[null!==size?"addClass":"removeClass"]("collapse"),this},transition:function(method,startEvent,completeEvent){var that=this,complete=function(){"show"==startEvent.type&&that.reset(),that.transitioning=0,that.$element.trigger(completeEvent)};this.$element.trigger(startEvent),startEvent.isDefaultPrevented()||(this.transitioning=1,this.$element[method]("in"),$.support.transition&&this.$element.hasClass("collapse")?this.$element.one($.support.transition.end,complete):complete())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var old=$.fn.collapse;$.fn.collapse=function(option){return this.each(function(){var $this=$(this),data=$this.data("collapse"),options="object"==typeof option&&option;data||$this.data("collapse",data=new Collapse(this,options)),"string"==typeof option&&data[option]()})},$.fn.collapse.defaults={toggle:!0},$.fn.collapse.Constructor=Collapse,$.fn.collapse.noConflict=function(){return $.fn.collapse=old,this},$(document).on("click.collapse.data-api","[data-toggle=collapse]",function(e){var href,$this=$(this),target=$this.attr("data-target")||e.preventDefault()||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,""),option=$(target).data("collapse")?"toggle":$this.data();$this[$(target).hasClass("in")?"addClass":"removeClass"]("collapsed"),$(target).collapse(option)})}(window.jQuery),!function($){"use strict";function clearMenus(){$(toggle).each(function(){getParent($(this)).removeClass("open")})}function getParent($this){var $parent,selector=$this.attr("data-target");return selector||(selector=$this.attr("href"),selector=selector&&/#/.test(selector)&&selector.replace(/.*(?=#[^\s]*$)/,"")),$parent=$(selector),$parent.length||($parent=$this.parent()),$parent}var toggle="[data-toggle=dropdown]",Dropdown=function(element){var $el=$(element).on("click.dropdown.data-api",this.toggle);$("html").on("click.dropdown.data-api",function(){$el.parent().removeClass("open")})};Dropdown.prototype={constructor:Dropdown,toggle:function(){var $parent,isActive,$this=$(this);if(!$this.is(".disabled, :disabled"))return $parent=getParent($this),isActive=$parent.hasClass("open"),clearMenus(),isActive||$parent.toggleClass("open"),$this.focus(),!1},keydown:function(e){var $this,$items,$parent,isActive,index;if(/(38|40|27)/.test(e.keyCode)&&($this=$(this),e.preventDefault(),e.stopPropagation(),!$this.is(".disabled, :disabled"))){if($parent=getParent($this),isActive=$parent.hasClass("open"),!isActive||isActive&&27==e.keyCode)return $this.click();$items=$("[role=menu] li:not(.divider):visible a",$parent),$items.length&&(index=$items.index($items.filter(":focus")),38==e.keyCode&&index>0&&index--,40==e.keyCode&&$items.length-1>index&&index++,~index||(index=0),$items.eq(index).focus())}}};var old=$.fn.dropdown;$.fn.dropdown=function(option){return this.each(function(){var $this=$(this),data=$this.data("dropdown");data||$this.data("dropdown",data=new Dropdown(this)),"string"==typeof option&&data[option].call($this)})},$.fn.dropdown.Constructor=Dropdown,$.fn.dropdown.noConflict=function(){return $.fn.dropdown=old,this},$(document).on("click.dropdown.data-api touchstart.dropdown.data-api",clearMenus).on("click.dropdown touchstart.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("touchstart.dropdown.data-api",".dropdown-menu",function(e){e.stopPropagation()}).on("click.dropdown.data-api touchstart.dropdown.data-api",toggle,Dropdown.prototype.toggle).on("keydown.dropdown.data-api touchstart.dropdown.data-api",toggle+", [role=menu]",Dropdown.prototype.keydown)}(window.jQuery),!function($){"use strict";var Modal=function(element,options){this.options=options,this.$element=$(element).delegate('[data-dismiss="modal"]',"click.dismiss.modal",$.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};Modal.prototype={constructor:Modal,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var that=this,e=$.Event("show");this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.backdrop(function(){var transition=$.support.transition&&that.$element.hasClass("fade");that.$element.parent().length||that.$element.appendTo(document.body),that.$element.show(),transition&&that.$element[0].offsetWidth,that.$element.addClass("in").attr("aria-hidden",!1),that.enforceFocus(),transition?that.$element.one($.support.transition.end,function(){that.$element.focus().trigger("shown")}):that.$element.focus().trigger("shown")}))},hide:function(e){e&&e.preventDefault(),e=$.Event("hide"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),$(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),$.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal())},enforceFocus:function(){var that=this;$(document).on("focusin.modal",function(e){that.$element[0]===e.target||that.$element.has(e.target).length||that.$element.focus()})},escape:function(){var that=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(e){27==e.which&&that.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var that=this,timeout=setTimeout(function(){that.$element.off($.support.transition.end),that.hideModal()},500);this.$element.one($.support.transition.end,function(){clearTimeout(timeout),that.hideModal()})},hideModal:function(){this.$element.hide().trigger("hidden"),this.backdrop()},removeBackdrop:function(){this.$backdrop.remove(),this.$backdrop=null},backdrop:function(callback){var animate=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var doAnimate=$.support.transition&&animate;this.$backdrop=$('