occi 2.5.19 → 3.0.0.beta.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/.travis.yml +3 -1
- data/AUTHORS +4 -3
- data/Gemfile +9 -0
- data/Gemfile.lock +64 -21
- data/README.md +19 -14
- data/Rakefile +12 -8
- data/Test Results - discovery_interface.html +862 -0
- data/bin/occi +333 -83
- data/examples/dsl_example.rb +6 -6
- data/examples/x509auth_example.rb +6 -6
- data/features/common/step_definitions/common_steps.rb +32 -0
- data/features/occi/core/create/create.feature +17 -0
- data/features/occi/core/create/step_definitions/create_steps.rb +0 -0
- data/features/occi/core/delete/delete.feature +14 -0
- data/features/occi/core/delete/step_definitions/delete_steps.rb +0 -0
- data/features/occi/core/discovery_interface/discovery_interface.feature +35 -0
- data/features/occi/core/discovery_interface/step_definitions/discovery_interface_steps.rb +19 -0
- data/features/occi/core/miscellaneous/miscellaneous.feature +14 -0
- data/features/occi/core/miscellaneous/step_definitions/miscellaneous_steps.rb +0 -0
- data/features/occi/core/read/read.feature +14 -0
- data/features/occi/core/read/step_definitions/read_steps.rb +0 -0
- data/features/occi/core/update/step_definitions/update_steps.rb +0 -0
- data/features/occi/core/update/update.feature +14 -0
- data/features/occi/infrastructure/create/create.feature +14 -0
- data/features/occi/infrastructure/create/step_definitions/create_steps.rb +0 -0
- data/features/support/env.rb +4 -0
- data/lib/occi.rb +29 -3
- data/lib/occi/api/client/client_amqp.rb +756 -0
- data/lib/occi/api/client/client_http.rb +922 -0
- data/lib/occi/api/client/http/httparty_fix.rb +53 -0
- data/lib/occi/api/client/http/net_http_fix.rb +46 -0
- data/lib/occi/api/dsl.rb +77 -73
- data/lib/occi/bin/helpers.rb +91 -0
- data/lib/occi/bin/occi_opts.rb +251 -0
- data/lib/occi/bin/resource_output_factory.rb +90 -0
- data/lib/occi/bin/templates/compute.erb +15 -0
- data/lib/occi/bin/templates/network.erb +11 -0
- data/lib/occi/bin/templates/os_tpl.erb +9 -0
- data/lib/occi/bin/templates/resource_tpl.erb +9 -0
- data/lib/occi/bin/templates/storage.erb +10 -0
- data/lib/occi/collection.rb +122 -25
- data/lib/occi/core.rb +18 -9
- data/lib/occi/core/action.rb +20 -4
- data/lib/occi/core/action_instance.rb +24 -0
- data/lib/occi/core/actions.rb +22 -0
- data/lib/occi/core/attribute_properties.rb +33 -84
- data/lib/occi/core/attributes.rb +32 -14
- data/lib/occi/core/categories.rb +46 -0
- data/lib/occi/core/category.rb +94 -20
- data/lib/occi/core/entities.rb +50 -0
- data/lib/occi/core/entity.rb +130 -89
- data/lib/occi/core/kind.rb +28 -35
- data/lib/occi/core/kinds.rb +22 -0
- data/lib/occi/core/link.rb +43 -40
- data/lib/occi/core/links.rb +34 -0
- data/lib/occi/core/mixin.rb +28 -23
- data/lib/occi/core/mixins.rb +22 -0
- data/lib/occi/core/related.rb +20 -0
- data/lib/occi/core/resource.rb +40 -40
- data/lib/occi/core/resources.rb +14 -0
- data/lib/occi/infrastructure.rb +27 -0
- data/lib/occi/infrastructure/compute.rb +159 -0
- data/lib/occi/infrastructure/network.rb +131 -0
- data/lib/occi/infrastructure/network/ipnetwork.rb +34 -0
- data/lib/occi/infrastructure/networkinterface.rb +124 -0
- data/lib/occi/infrastructure/networkinterface/ipnetworkinterface.rb +34 -0
- data/lib/occi/infrastructure/os_tpl.rb +19 -0
- data/lib/occi/infrastructure/resource_tpl.rb +19 -0
- data/lib/occi/infrastructure/storage.rb +96 -0
- data/lib/occi/infrastructure/storagelink.rb +73 -0
- data/lib/occi/log.rb +6 -2
- data/lib/occi/model.rb +38 -70
- data/lib/occi/parser.rb +108 -88
- data/lib/occi/version.rb +2 -2
- data/lib/occiantlr/OCCIANTLR.g +6 -5
- data/lib/occiantlr/OCCIANTLRLexer.rb +52 -52
- data/lib/occiantlr/OCCIANTLRParser.rb +678 -569
- data/lib/occiantlr/README.md +1 -1
- data/occi.gemspec +2 -1
- data/spec/cassettes/client_http_text_plain.yml +1066 -0
- data/spec/occi/api/client/client_amqp_spec.rb +148 -0
- data/spec/occi/api/client/client_http_0.5_spec.rb +292 -0
- data/spec/occi/api/client/client_http_spec.rb +259 -0
- data/spec/occi/api/dsl_spec.rb +0 -0
- data/spec/occi/collection_spec.rb +23 -10
- data/spec/occi/core/categories_spec.rb +30 -0
- data/spec/occi/core/category_spec.rb +41 -0
- data/spec/occi/core/entity_spec.rb +52 -0
- data/spec/occi/core/resource_spec.rb +21 -0
- data/spec/occi/infrastructure/compute_spec.rb +32 -0
- data/spec/occi/log_spec.rb +10 -10
- data/spec/occi/model_spec.rb +24 -24
- data/spec/occi/parser_spec.rb +89 -39
- data/spec/occi/test.json +22 -58
- data/spec/occiantlr/parser_spec.rb +5 -7
- data/spec/spec_helper.rb +13 -3
- metadata +116 -19
- data/etc/model/infrastructure/compute.json +0 -108
- data/etc/model/infrastructure/ipnetwork.json +0 -40
- data/etc/model/infrastructure/ipnetworkinterface.json +0 -40
- data/etc/model/infrastructure/network.json +0 -55
- data/etc/model/infrastructure/networkinterface.json +0 -38
- data/etc/model/infrastructure/os_template.json +0 -9
- data/etc/model/infrastructure/resource_template.json +0 -9
- data/etc/model/infrastructure/storage.json +0 -72
- data/etc/model/infrastructure/storagelink.json +0 -38
- data/lib/occi/api/client.rb +0 -596
- data/lib/occi/client/occiopts.rb +0 -146
- data/spec/occi/client_spec.rb +0 -12
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/AUTHORS
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
|
1
|
+
rOcci was designed and is mainly developed by Florian Feldhaus (GWDG) and Piotr Kasprzak (GWDG) in Germany.
|
2
2
|
|
3
|
-
Special thanks to the following extraordinary individuals,
|
3
|
+
Special thanks to the following extraordinary individuals, whithout whom rOcci would not be possible:
|
4
4
|
|
5
|
-
* Hayati Bice - who wrote the initial version of an
|
5
|
+
* Hayati Bice - who wrote the initial version of an Occi server rOcci is based on
|
6
6
|
* Max Günther - who wrote the EC2 backend
|
7
7
|
* Andre Thevapalan - for his input regarding the JSON rendering
|
8
|
+
* Boris Parak - especially for his input regarding the Client / Client DSL and CLI
|
8
9
|
* the OCCI Working Group - for developing OCCI
|
data/Gemfile
CHANGED
@@ -12,6 +12,7 @@ gem "rake"
|
|
12
12
|
gem "httparty"
|
13
13
|
gem "highline"
|
14
14
|
gem "i18n"
|
15
|
+
gem "amqp"
|
15
16
|
|
16
17
|
# development related gems
|
17
18
|
group :development do
|
@@ -19,5 +20,13 @@ group :development do
|
|
19
20
|
gem "simplecov"
|
20
21
|
gem "yard"
|
21
22
|
gem "yard-sinatra"
|
23
|
+
gem "yard-rspec"
|
24
|
+
gem "yard-cucumber"
|
22
25
|
gem "rspec-http"
|
26
|
+
gem "vcr"
|
27
|
+
gem "webmock", "=1.8.11"
|
28
|
+
end
|
29
|
+
|
30
|
+
platforms :jruby do
|
31
|
+
gem 'jruby-openssl'
|
23
32
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,53 +1,92 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
activesupport (3.2.
|
4
|
+
activesupport (3.2.9)
|
5
5
|
i18n (~> 0.6)
|
6
6
|
multi_json (~> 1.0)
|
7
|
+
addressable (2.3.2)
|
8
|
+
amq-client (0.9.5)
|
9
|
+
amq-protocol (>= 0.9.4)
|
10
|
+
eventmachine
|
11
|
+
amq-protocol (0.9.5)
|
12
|
+
amqp (0.9.8)
|
13
|
+
amq-client (~> 0.9.5)
|
14
|
+
amq-protocol (>= 0.9.4)
|
15
|
+
eventmachine
|
7
16
|
antlr3 (1.8.12)
|
8
|
-
|
17
|
+
bouncy-castle-java (1.5.0146.1)
|
18
|
+
builder (3.1.4)
|
19
|
+
crack (0.3.1)
|
20
|
+
cucumber (1.2.1)
|
21
|
+
builder (>= 2.1.2)
|
22
|
+
diff-lcs (>= 1.1.3)
|
23
|
+
gherkin (~> 2.11.0)
|
24
|
+
json (>= 1.4.6)
|
9
25
|
diff-lcs (1.1.3)
|
26
|
+
eventmachine (1.0.0)
|
27
|
+
eventmachine (1.0.0-java)
|
28
|
+
gherkin (2.11.5)
|
29
|
+
json (>= 1.4.6)
|
30
|
+
gherkin (2.11.5-java)
|
31
|
+
json (>= 1.4.6)
|
10
32
|
hashie (1.2.0)
|
11
|
-
highline (1.6.
|
12
|
-
httparty (0.
|
13
|
-
multi_json
|
33
|
+
highline (1.6.15)
|
34
|
+
httparty (0.9.0)
|
35
|
+
multi_json (~> 1.0)
|
14
36
|
multi_xml
|
15
|
-
i18n (0.6.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
37
|
+
i18n (0.6.1)
|
38
|
+
jruby-openssl (0.7.7)
|
39
|
+
bouncy-castle-java (>= 1.5.0146.1)
|
40
|
+
json (1.7.5)
|
41
|
+
json (1.7.5-java)
|
42
|
+
multi_json (1.3.7)
|
43
|
+
multi_xml (0.5.1)
|
44
|
+
nokogiri (1.5.5)
|
45
|
+
nokogiri (1.5.5-java)
|
20
46
|
rake (0.9.2.2)
|
21
|
-
rspec (2.
|
22
|
-
rspec-core (~> 2.
|
23
|
-
rspec-expectations (~> 2.
|
24
|
-
rspec-mocks (~> 2.
|
25
|
-
rspec-core (2.
|
26
|
-
rspec-expectations (2.
|
47
|
+
rspec (2.11.0)
|
48
|
+
rspec-core (~> 2.11.0)
|
49
|
+
rspec-expectations (~> 2.11.0)
|
50
|
+
rspec-mocks (~> 2.11.0)
|
51
|
+
rspec-core (2.11.1)
|
52
|
+
rspec-expectations (2.11.3)
|
27
53
|
diff-lcs (~> 1.1.3)
|
28
54
|
rspec-http (0.10.0)
|
29
55
|
rspec (~> 2.0)
|
30
|
-
rspec-mocks (2.
|
31
|
-
simplecov (0.
|
56
|
+
rspec-mocks (2.11.3)
|
57
|
+
simplecov (0.7.1)
|
32
58
|
multi_json (~> 1.0)
|
33
|
-
simplecov-html (~> 0.
|
34
|
-
simplecov-html (0.
|
59
|
+
simplecov-html (~> 0.7.1)
|
60
|
+
simplecov-html (0.7.1)
|
35
61
|
uuidtools (2.1.3)
|
36
|
-
|
62
|
+
vcr (2.3.0)
|
63
|
+
webmock (1.8.11)
|
64
|
+
addressable (>= 2.2.7)
|
65
|
+
crack (>= 0.1.7)
|
66
|
+
yard (0.8.3)
|
67
|
+
yard-cucumber (2.2.2)
|
68
|
+
cucumber (>= 0.7.5)
|
69
|
+
gherkin (>= 2.2.9)
|
70
|
+
yard (>= 0.8.1)
|
71
|
+
yard-rspec (0.1)
|
72
|
+
yard
|
37
73
|
yard-sinatra (1.0.0)
|
38
74
|
yard (~> 0.7)
|
39
75
|
|
40
76
|
PLATFORMS
|
77
|
+
java
|
41
78
|
ruby
|
42
79
|
|
43
80
|
DEPENDENCIES
|
44
81
|
activesupport
|
82
|
+
amqp
|
45
83
|
antlr3
|
46
84
|
builder
|
47
85
|
hashie
|
48
86
|
highline
|
49
87
|
httparty
|
50
88
|
i18n
|
89
|
+
jruby-openssl
|
51
90
|
json
|
52
91
|
nokogiri
|
53
92
|
rake
|
@@ -55,5 +94,9 @@ DEPENDENCIES
|
|
55
94
|
rspec-http
|
56
95
|
simplecov
|
57
96
|
uuidtools (>= 2.1.3)
|
97
|
+
vcr
|
98
|
+
webmock (= 1.8.11)
|
58
99
|
yard
|
100
|
+
yard-cucumber
|
101
|
+
yard-rspec
|
59
102
|
yard-sinatra
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
rOCCI - A Ruby OCCI Framework
|
2
2
|
=================================
|
3
3
|
|
4
|
-
[![Build Status](https://secure.travis-ci.org/gwdg/rOCCI.png)](http://travis-ci.org/gwdg/rOCCI)
|
4
|
+
[![Build Status](https://secure.travis-ci.org/gwdg/rOCCI.png)](http://travis-ci.org/gwdg/rOCCI) [![Dependency Status](https://gemnasium.com/gwdg/rOCCI.png)](https://gemnasium.com/gwdg/rOCCI)
|
5
5
|
|
6
6
|
Requirements
|
7
7
|
------------
|
@@ -20,12 +20,17 @@ Installation
|
|
20
20
|
Usage
|
21
21
|
-----
|
22
22
|
### Client
|
23
|
-
The OCCI gem includes a client you can use directly from shell with the following auth methods: x509 (with --password, --user-cred and --ca-path), basic (with --username and --password), digest (with --username and --password), none. If you won't set a password using --password, the client will
|
23
|
+
The OCCI gem includes a client you can use directly from shell with the following auth methods: x509 (with --password, --user-cred and --ca-path), basic (with --username and --password), digest (with --username and --password), none. If you won't set a password using --password, the client will ask for it later on. There is also an interactive mode, which will allow you to interact with the client through menus and answers to simple questions (this feature is still experimental).
|
24
24
|
|
25
25
|
To find out more about available options and defaults use
|
26
26
|
|
27
27
|
occi --help
|
28
28
|
|
29
|
+
To run the client in an interactive mode use
|
30
|
+
|
31
|
+
occi --interactive
|
32
|
+
occi --interactive --endpoint https://<ENDPOINT>:<PORT>/
|
33
|
+
|
29
34
|
To list available resources use
|
30
35
|
|
31
36
|
occi --endpoint https://<ENDPOINT>:<PORT>/ --action list --resource compute --auth x509
|
@@ -93,11 +98,11 @@ In your scripts, you can use the OCCI client DSL.
|
|
93
98
|
|
94
99
|
To include the DSL definitions in your script use
|
95
100
|
|
96
|
-
extend
|
101
|
+
extend Occi::Api::Dsl
|
97
102
|
|
98
|
-
To connect to an OCCI endpoint/server (e.g. running on http://localhost:
|
103
|
+
To connect to an OCCI endpoint/server (e.g. running on http://localhost:3300/ )
|
99
104
|
|
100
|
-
connect('http://localhost:3300',auth||=nil)
|
105
|
+
connect(:http, 'http://localhost:3300',auth||=nil)
|
101
106
|
|
102
107
|
To get the list of available resource types or mixin types use
|
103
108
|
|
@@ -142,7 +147,7 @@ To create a new compute resource use
|
|
142
147
|
size = mixin 'large', 'resource_tpl'
|
143
148
|
cmpt = resource "compute"
|
144
149
|
cmpt.mixins << os << size
|
145
|
-
cmpt.
|
150
|
+
cmpt.title = "My VM"
|
146
151
|
create cmpt
|
147
152
|
|
148
153
|
To get a description of a specific resource use
|
@@ -161,9 +166,9 @@ To delete a specific resource use
|
|
161
166
|
If you need low level access to parts of the OCCI client or need to use more than one instance
|
162
167
|
at a time, you should use the OCCI client API directly.
|
163
168
|
|
164
|
-
To connect to an OCCI endpoint/server (e.g. running on http://localhost:
|
169
|
+
To connect to an OCCI endpoint/server (e.g. running on http://localhost:3300/ )
|
165
170
|
|
166
|
-
client =
|
171
|
+
client = Occi::Api::Client::ClientHttp.new('http://localhost:3300',auth||=nil)
|
167
172
|
|
168
173
|
All available categories are automatically registered to the OCCI model during client initialization. You can get them via
|
169
174
|
|
@@ -212,7 +217,7 @@ To create a new compute resource use
|
|
212
217
|
size = client.find_mixin 'large', 'resource_tpl'
|
213
218
|
cmpt = client.get_resource "compute"
|
214
219
|
cmpt.mixins << os << size
|
215
|
-
cmpt.
|
220
|
+
cmpt.title = "My VM"
|
216
221
|
client.create cmpt
|
217
222
|
|
218
223
|
To get a description of a specific resource use
|
@@ -233,13 +238,13 @@ The OCCI gem includes its own logging mechanism using a message queue. By defaul
|
|
233
238
|
A new OCCI Logger can be initialized by specifying the log destination (either a filename or an IO object like
|
234
239
|
STDOUT) and the log level.
|
235
240
|
|
236
|
-
|
241
|
+
Occi::Log.new(STDOUT,Occi::Log::INFO)
|
237
242
|
|
238
243
|
You can create multiple Loggers to receive the log output.
|
239
244
|
|
240
245
|
You can always, even if there is no logger defined, log output using the class methods of OCCI::Log e.g.
|
241
246
|
|
242
|
-
|
247
|
+
Occi::Log.info("Test message")
|
243
248
|
|
244
249
|
#### Registering categories in the OCCI Model
|
245
250
|
|
@@ -247,7 +252,7 @@ Before the parser may be used, the available categories have to be registered in
|
|
247
252
|
|
248
253
|
For categories already specified by the OCCI WG a method exists in the OCCI Model class to register them:
|
249
254
|
|
250
|
-
model =
|
255
|
+
model = Occi::Model.new
|
251
256
|
model.register_infrastructure
|
252
257
|
|
253
258
|
Further categories can either be registered from files which include OCCI collections in JSON formator or from parsed
|
@@ -265,7 +270,7 @@ OCCI messages can be parsed to an OCCI collection for example like
|
|
265
270
|
|
266
271
|
media_type = 'text/plain'
|
267
272
|
body = %Q|Category: compute; scheme="http://schemas.ogf.org/occi/infrastructure#"; class="kind"|
|
268
|
-
collection=
|
273
|
+
collection=Occi::Parser.parse(media_type, body)
|
269
274
|
|
270
275
|
#### Parsing OVF / OVA files
|
271
276
|
|
@@ -276,7 +281,7 @@ bundled with rOCCI and can be parsed to an OCCI collection with
|
|
276
281
|
|
277
282
|
require 'open-uri'
|
278
283
|
ova=open 'https://raw.github.com/gwdg/rOCCI/master/spec/occi/test.ova'
|
279
|
-
collection=
|
284
|
+
collection=Occi::Parser.ova(ova.read)
|
280
285
|
|
281
286
|
Currently only the following entries of OVF files are parsed
|
282
287
|
|
data/Rakefile
CHANGED
@@ -3,18 +3,15 @@ Bundler::GemHelper.install_tasks
|
|
3
3
|
|
4
4
|
task :default => 'rcov:all'
|
5
5
|
|
6
|
-
require 'rspec/core/rake_task'
|
7
|
-
#require 'cucumber/rake/task'
|
8
|
-
|
9
6
|
namespace :rcov do
|
10
7
|
|
11
|
-
|
8
|
+
require 'rspec/core/rake_task'
|
9
|
+
require 'cucumber/rake/task'
|
10
|
+
|
12
11
|
Cucumber::Rake::Task.new(:cucumber) do |t|
|
13
12
|
t.cucumber_opts = "--format pretty"
|
14
|
-
|
15
13
|
ENV['COVERAGE'] = "true"
|
16
14
|
end
|
17
|
-
=end
|
18
15
|
|
19
16
|
RSpec::Core::RakeTask.new(:rspec) do |t|
|
20
17
|
ENV['COVERAGE'] = "true"
|
@@ -24,6 +21,13 @@ namespace :rcov do
|
|
24
21
|
task :all do |t|
|
25
22
|
rm "coverage/coverage.data" if File.exist?("coverage/coverage.data")
|
26
23
|
Rake::Task['rcov:rspec'].invoke
|
27
|
-
|
24
|
+
Rake::Task["rcov:cucumber"].invoke
|
28
25
|
end
|
29
|
-
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
require 'yard'
|
30
|
+
YARD::Rake::YardocTask.new(:yard) do |t|
|
31
|
+
t.files = ['features/**/*.feature', 'features/**/*.rb']
|
32
|
+
t.options = ['--any', '--extra', '--opts'] # optional
|
33
|
+
end
|
@@ -0,0 +1,862 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3
|
+
<head>
|
4
|
+
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
5
|
+
<title>Test Results — discovery_interface</title>
|
6
|
+
<style type="text/css">
|
7
|
+
html {
|
8
|
+
height: 100%
|
9
|
+
}
|
10
|
+
|
11
|
+
body {
|
12
|
+
margin: 0 auto;
|
13
|
+
padding: 0;
|
14
|
+
text-align: left;
|
15
|
+
height: 100%;
|
16
|
+
font-family: myriad, arial, tahoma, verdana, sans-serif;
|
17
|
+
color: #151515;
|
18
|
+
font-size: 90%;
|
19
|
+
line-height: 1.3em;
|
20
|
+
background-color: #fff;
|
21
|
+
}
|
22
|
+
|
23
|
+
* {
|
24
|
+
margin: 0;
|
25
|
+
padding: 0
|
26
|
+
}
|
27
|
+
|
28
|
+
.clr {
|
29
|
+
clear: both;
|
30
|
+
overflow: hidden;
|
31
|
+
}
|
32
|
+
|
33
|
+
img {
|
34
|
+
border: none
|
35
|
+
}
|
36
|
+
|
37
|
+
a {
|
38
|
+
color: #0046b0;
|
39
|
+
text-decoration: none;
|
40
|
+
}
|
41
|
+
|
42
|
+
a:hover {
|
43
|
+
text-decoration: none;
|
44
|
+
}
|
45
|
+
|
46
|
+
a:focus, a:active {
|
47
|
+
outline: none
|
48
|
+
}
|
49
|
+
|
50
|
+
.noborder {
|
51
|
+
border: none
|
52
|
+
}
|
53
|
+
|
54
|
+
h1 {
|
55
|
+
color: #151515;
|
56
|
+
font-size: 180%;
|
57
|
+
line-height: 1.1em;
|
58
|
+
font-weight: bold;
|
59
|
+
}
|
60
|
+
|
61
|
+
h2 {
|
62
|
+
color: #393D42;
|
63
|
+
font-size: 160%;
|
64
|
+
font-weight: normal
|
65
|
+
}
|
66
|
+
|
67
|
+
h3 {
|
68
|
+
font-size: 120%;
|
69
|
+
font-weight: bold;
|
70
|
+
margin-bottom: .5em
|
71
|
+
}
|
72
|
+
|
73
|
+
h4 {
|
74
|
+
font-size: 110%;
|
75
|
+
}
|
76
|
+
|
77
|
+
h5 {
|
78
|
+
font-size: 110%;
|
79
|
+
}
|
80
|
+
|
81
|
+
span.failed {
|
82
|
+
color: #ff0000
|
83
|
+
}
|
84
|
+
|
85
|
+
span.error {
|
86
|
+
color: #ff0000
|
87
|
+
}
|
88
|
+
|
89
|
+
span.passed {
|
90
|
+
color: #1d9d01
|
91
|
+
}
|
92
|
+
|
93
|
+
span.ignored {
|
94
|
+
color: #fff600
|
95
|
+
}
|
96
|
+
|
97
|
+
span.skipped {
|
98
|
+
color: #fff600
|
99
|
+
}
|
100
|
+
|
101
|
+
hr {
|
102
|
+
background-color: blue
|
103
|
+
}
|
104
|
+
|
105
|
+
#container {
|
106
|
+
min-width: 30em;
|
107
|
+
}
|
108
|
+
|
109
|
+
#header {
|
110
|
+
padding: 0;
|
111
|
+
position: fixed;
|
112
|
+
width: 100%;
|
113
|
+
z-index: 10;
|
114
|
+
background-color: #c7ceda;
|
115
|
+
}
|
116
|
+
|
117
|
+
#header h1 {
|
118
|
+
margin: 1em 3em 1em 1.7em;
|
119
|
+
}
|
120
|
+
|
121
|
+
#header h1 strong {
|
122
|
+
white-space: nowrap;
|
123
|
+
}
|
124
|
+
|
125
|
+
#header .time {
|
126
|
+
margin-top: 2.2em;
|
127
|
+
margin-right: 3.4em;
|
128
|
+
float: right;
|
129
|
+
}
|
130
|
+
|
131
|
+
#treecontrol {
|
132
|
+
margin: 0;
|
133
|
+
padding: .5em 3em .5em 0;
|
134
|
+
text-align: right;
|
135
|
+
background-color: #fff;
|
136
|
+
}
|
137
|
+
|
138
|
+
#treecontrol ul li {
|
139
|
+
display: inline;
|
140
|
+
list-style: none;
|
141
|
+
color: #666;
|
142
|
+
}
|
143
|
+
|
144
|
+
#content {
|
145
|
+
padding: 0 2.5em 2em 1.7em;
|
146
|
+
}
|
147
|
+
|
148
|
+
#content ul {
|
149
|
+
margin: .4em 0 .1em 2em;
|
150
|
+
list-style: none;
|
151
|
+
}
|
152
|
+
|
153
|
+
#content ul li.level {
|
154
|
+
cursor: pointer;
|
155
|
+
}
|
156
|
+
|
157
|
+
#content ul li.level span {
|
158
|
+
display: block;
|
159
|
+
font-weight: bold;
|
160
|
+
}
|
161
|
+
|
162
|
+
#content ul li.level.top {
|
163
|
+
margin-bottom: .3em;
|
164
|
+
}
|
165
|
+
|
166
|
+
#content ul li.level.top > span {
|
167
|
+
padding: .5em 0 .5em 1em;
|
168
|
+
font-size: 120%;
|
169
|
+
color: #151515;
|
170
|
+
background-color: #f2f2f2;
|
171
|
+
border-left: solid 10px #93e078;
|
172
|
+
}
|
173
|
+
|
174
|
+
#content ul li.level.top.failed > span {
|
175
|
+
border-left: solid 10px #f02525;
|
176
|
+
}
|
177
|
+
|
178
|
+
#content ul li.level.top.ignored > span {
|
179
|
+
border-left: solid 10px #f8d216;
|
180
|
+
}
|
181
|
+
|
182
|
+
#content ul li.level.suite > span {
|
183
|
+
margin-bottom: .8em;
|
184
|
+
padding: 0 0 0 .8em;
|
185
|
+
display: block;
|
186
|
+
font-size: 110%;
|
187
|
+
line-height: 1em;
|
188
|
+
color: #151515;
|
189
|
+
border-left: solid 15px #93e078;
|
190
|
+
}
|
191
|
+
|
192
|
+
#content ul li.level.suite.failed > span {
|
193
|
+
border-left: solid 15px #f02525;
|
194
|
+
}
|
195
|
+
|
196
|
+
#content ul li.level.suite.ignored > span {
|
197
|
+
border-left: solid 15px #f8d216;
|
198
|
+
}
|
199
|
+
|
200
|
+
#content ul li.level.suite > ul {
|
201
|
+
margin-bottom: 1.5em;
|
202
|
+
}
|
203
|
+
|
204
|
+
#content ul li.level.test > span {
|
205
|
+
padding: .3em 0 .3em 1em;
|
206
|
+
color: #0046b0;
|
207
|
+
font-size: 100%;
|
208
|
+
border-left: solid 6px #93e078;
|
209
|
+
border-bottom: solid 1px #dbdbdb;
|
210
|
+
}
|
211
|
+
|
212
|
+
#content ul li.level.test.failed > span {
|
213
|
+
border-left: solid 6px #f02525;
|
214
|
+
}
|
215
|
+
|
216
|
+
#content ul li.level.test.ignored > span {
|
217
|
+
border-left: solid 6px #f8d216;
|
218
|
+
}
|
219
|
+
|
220
|
+
#content ul li.text p, #content ul li.text span {
|
221
|
+
margin-bottom: 1.5em;
|
222
|
+
color: #151515 !important;
|
223
|
+
font-size: 90% !important;
|
224
|
+
font-weight: normal !important;
|
225
|
+
overflow-x: auto;
|
226
|
+
cursor: auto !important;
|
227
|
+
background: none !important;
|
228
|
+
border: none !important;
|
229
|
+
}
|
230
|
+
|
231
|
+
#content ul li.text span {
|
232
|
+
margin-bottom: 0;
|
233
|
+
display: block;
|
234
|
+
}
|
235
|
+
|
236
|
+
#content ul li.text span.stderr {
|
237
|
+
color: #8b0000 !important;
|
238
|
+
}
|
239
|
+
|
240
|
+
#content ul li .time {
|
241
|
+
margin-right: .5em;
|
242
|
+
width: 5em;
|
243
|
+
text-align: right;
|
244
|
+
font-size: 13px;
|
245
|
+
color: #151515;
|
246
|
+
font-style: normal;
|
247
|
+
font-weight: normal;
|
248
|
+
float: right;
|
249
|
+
}
|
250
|
+
|
251
|
+
#content ul li span .status {
|
252
|
+
width: 6em;
|
253
|
+
font-size: 90%;
|
254
|
+
color: #1d9d01;
|
255
|
+
font-style: normal;
|
256
|
+
font-weight: normal;
|
257
|
+
float: right;
|
258
|
+
text-align: right;
|
259
|
+
}
|
260
|
+
|
261
|
+
#content ul li.failed > span .status {
|
262
|
+
color: #ff0000;
|
263
|
+
}
|
264
|
+
|
265
|
+
#content ul li.ignored > span .status {
|
266
|
+
color: #d6b000;
|
267
|
+
}
|
268
|
+
|
269
|
+
#footer {
|
270
|
+
height: 2em;
|
271
|
+
background-color: #c7ceda;
|
272
|
+
}
|
273
|
+
#footer p {
|
274
|
+
padding: .4em 0 0 3.6em;
|
275
|
+
font-size: 80%;
|
276
|
+
}
|
277
|
+
</style>
|
278
|
+
|
279
|
+
<script type="text/javascript">
|
280
|
+
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(G(){9(1n E!="11")H w=E;H E=17.16=G(a,c){9(17==6||!6.4K)I 1q E(a,c);I 6.4K(a,c)};9(1n $!="11")H D=$;17.$=E;H u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/;E.1b=E.3x={4K:G(a,c){a=a||U;9(1n a=="1M"){H m=u.2L(a);9(m&&(m[1]||!c)){9(m[1])a=E.4I([m[1]],c);J{H b=U.42(m[3]);9(b)9(b.1T!=m[3])I E().1X(a);J{6[0]=b;6.L=1;I 6}J a=[]}}J I 1q E(c).1X(a)}J 9(E.1p(a))I 1q E(U)[E.1b.2d?"2d":"37"](a);I 6.6u(a.1d==1C&&a||(a.4d||a.L&&a!=17&&!a.1z&&a[0]!=11&&a[0].1z)&&E.2h(a)||[a])},4d:"1.2",82:G(){I 6.L},L:0,28:G(a){I a==11?E.2h(6):6[a]},2v:G(a){H b=E(a);b.4Y=6;I b},6u:G(a){6.L=0;1C.3x.1a.15(6,a);I 6},O:G(a,b){I E.O(6,a,b)},4J:G(a){H b=-1;6.O(G(i){9(6==a)b=i});I b},1y:G(f,d,e){H c=f;9(f.1d==3T)9(d==11)I 6.L&&E[e||"1y"](6[0],f)||11;J{c={};c[f]=d}I 6.O(G(a){M(H b 1j c)E.1y(e?6.R:6,b,E.1c(6,c[b],e,a,b))})},18:G(b,a){I 6.1y(b,a,"3O")},2t:G(e){9(1n e!="5w"&&e!=S)I 6.4o().3e(U.6F(e));H t="";E.O(e||6,G(){E.O(6.2X,G(){9(6.1z!=8)t+=6.1z!=1?6.6x:E.1b.2t([6])})});I t},5l:G(b){9(6[0])E(b,6[0].3N).6t().38(6[0]).1W(G(){H a=6;1Y(a.1t)a=a.1t;I a}).3e(6);I 6},8p:G(a){I 6.O(G(){E(6).6p().5l(a)})},8h:G(a){I 6.O(G(){E(6).5l(a)})},3e:G(){I 6.3s(1k,Q,1,G(a){6.57(a)})},6k:G(){I 6.3s(1k,Q,-1,G(a){6.38(a,6.1t)})},6g:G(){I 6.3s(1k,P,1,G(a){6.14.38(a,6)})},53:G(){I 6.3s(1k,P,-1,G(a){6.14.38(a,6.2i)})},1B:G(){I 6.4Y||E([])},1X:G(t){H b=E.1W(6,G(a){I E.1X(t,a)});I 6.2v(/[^+>] [^+>]/.12(t)||t.1e("..")>-1?E.4V(b):b)},6t:G(e){H f=6.1W(G(){I 6.66?E(6.66)[0]:6.4S(Q)});9(e===Q){H d=f.1X("*").4Q();6.1X("*").4Q().O(G(i){H c=E.K(6,"2A");M(H a 1j c)M(H b 1j c[a])E.1h.1f(d[i],a,c[a][b],c[a][b].K)})}I f},1A:G(t){I 6.2v(E.1p(t)&&E.2T(6,G(b,a){I t.15(b,[a])})||E.3G(t,6))},5T:G(t){I 6.2v(t.1d==3T&&E.3G(t,6,Q)||E.2T(6,G(a){I(t.1d==1C||t.4d)?E.2S(a,t)<0:a!=t}))},1f:G(t){I 6.2v(E.1S(6.28(),t.1d==3T?E(t).28():t.L!=11&&(!t.Y||t.Y=="7t")?t:[t]))},3j:G(a){I a?E.3G(a,6).L>0:P},7g:G(a){I 6.3j("."+a)},2V:G(b){9(b==11){9(6.L){H c=6[0];9(E.Y(c,"24")){H e=c.4z,a=[],W=c.W,2P=c.N=="24-2P";9(e<0)I S;M(H i=2P?e:0,2Y=2P?e+1:W.L;i<2Y;i++){H d=W[i];9(d.29){H b=E.V.1g&&!d.70["1N"].9U?d.2t:d.1N;9(2P)I b;a.1a(b)}}I a}J I 6[0].1N.1o(/\\r/g,"")}}J I 6.O(G(){9(b.1d==1C&&/4s|5u/.12(6.N))6.2K=(E.2S(6.1N,b)>=0||E.2S(6.2J,b)>=0);J 9(E.Y(6,"24")){H a=b.1d==1C?b:[b];E("9m",6).O(G(){6.29=(E.2S(6.1N,a)>=0||E.2S(6.2t,a)>=0)});9(!a.L)6.4z=-1}J 6.1N=b})},4n:G(a){I a==11?(6.L?6[0].3D:S):6.4o().3e(a)},6H:G(a){I 6.53(a).2e()},2s:G(){I 6.2v(1C.3x.2s.15(6,1k))},1W:G(b){I 6.2v(E.1W(6,G(a,i){I b.3c(a,i,a)}))},4Q:G(){I 6.1f(6.4Y)},3s:G(f,d,g,e){H c=6.L>1,a;I 6.O(G(){9(!a){a=E.4I(f,6.3N);9(g<0)a.91()}H b=6;9(d&&E.Y(6,"1F")&&E.Y(a[0],"4k"))b=6.4q("1J")[0]||6.57(U.5r("1J"));E.O(a,G(){9(E.Y(6,"1P")){9(6.3g)E.3w({1u:6.3g,3h:P,1Z:"1P"});J E.5h(6.2t||6.6s||6.3D||"")}J e.15(b,[c?6.4S(Q):6])})})}};E.1i=E.1b.1i=G(){H c=1k[0]||{},a=1,2g=1k.L,5e=P;9(c.1d==8v){5e=c;c=1k[1]||{}}9(2g==1){c=6;a=0}H b;M(;a<2g;a++)9((b=1k[a])!=S)M(H i 1j b){9(c==b[i])6r;9(5e&&1n b[i]==\'5w\'&&c[i])E.1i(c[i],b[i]);J 9(b[i]!=11)c[i]=b[i]}I c};H F="16"+(1q 3v()).3u(),6q=0,5d={};E.1i({8k:G(a){17.$=D;9(a)17.16=w;I E},1p:G(a){I!!a&&1n a!="1M"&&!a.Y&&a.1d!=1C&&/G/i.12(a+"")},4a:G(a){I a.35&&!a.1K||a.34&&a.3N&&!a.3N.1K},5h:G(a){a=E.33(a);9(a){9(17.6o)17.6o(a);J 9(E.V.1H)17.58(a,0);J 3p.3c(17,a)}},Y:G(b,a){I b.Y&&b.Y.26()==a.26()},1I:{},K:G(c,d,b){c=c==17?5d:c;H a=c[F];9(!a)a=c[F]=++6q;9(d&&!E.1I[a])E.1I[a]={};9(b!=11)E.1I[a][d]=b;I d?E.1I[a][d]:a},30:G(c,b){c=c==17?5d:c;H a=c[F];9(b){9(E.1I[a]){2G E.1I[a][b];b="";M(b 1j E.1I[a])22;9(!b)E.30(c)}}J{2c{2G c[F]}27(e){9(c.54)c.54(F)}2G E.1I[a]}},O:G(a,b,c){9(c){9(a.L==11)M(H i 1j a)b.15(a[i],c);J M(H i=0,45=a.L;i<45;i++)9(b.15(a[i],c)===P)22}J{9(a.L==11)M(H i 1j a)b.3c(a[i],i,a[i]);J M(H i=0,45=a.L,2V=a[0];i<45&&b.3c(2V,i,2V)!==P;2V=a[++i]){}}I a},1c:G(c,b,d,e,a){9(E.1p(b))b=b.3c(c,[e]);H f=/z-?4J|7T-?7S|1v|69|7Q-?1G/i;I b&&b.1d==4X&&d=="3O"&&!f.12(a)?b+"2I":b},1m:{1f:G(b,c){E.O((c||"").2p(/\\s+/),G(i,a){9(!E.1m.3t(b.1m,a))b.1m+=(b.1m?" ":"")+a})},2e:G(b,c){b.1m=c!=11?E.2T(b.1m.2p(/\\s+/),G(a){I!E.1m.3t(c,a)}).65(" "):""},3t:G(t,c){I E.2S(c,(t.1m||t).3z().2p(/\\s+/))>-1}},2q:G(e,o,f){M(H i 1j o){e.R["3C"+i]=e.R[i];e.R[i]=o[i]}f.15(e,[]);M(H i 1j o)e.R[i]=e.R["3C"+i]},18:G(e,p){9(p=="1G"||p=="2E"){H b={},3Z,3Y,d=["7L","7K","7J","7G"];E.O(d,G(){b["7F"+6]=0;b["7D"+6+"61"]=0});E.2q(e,b,G(){9(E(e).3j(\':3X\')){3Z=e.7A;3Y=e.7z}J{e=E(e.4S(Q)).1X(":4s").5X("2K").1B().18({4v:"1O",2W:"4D",19:"2U",7w:"0",1R:"0"}).5P(e.14)[0];H a=E.18(e.14,"2W")||"3V";9(a=="3V")e.14.R.2W="7k";3Z=e.7h;3Y=e.7f;9(a=="3V")e.14.R.2W="3V";e.14.3k(e)}});I p=="1G"?3Z:3Y}I E.3O(e,p)},3O:G(h,j,i){H g,2u=[],2q=[];G 3l(a){9(!E.V.1H)I P;H b=U.3M.3P(a,S);I!b||b.4y("3l")==""}9(j=="1v"&&E.V.1g){g=E.1y(h.R,"1v");I g==""?"1":g}9(j.1U(/4r/i))j=y;9(!i&&h.R[j])g=h.R[j];J 9(U.3M&&U.3M.3P){9(j.1U(/4r/i))j="4r";j=j.1o(/([A-Z])/g,"-$1").2F();H d=U.3M.3P(h,S);9(d&&!3l(h))g=d.4y(j);J{M(H a=h;a&&3l(a);a=a.14)2u.4Z(a);M(a=0;a<2u.L;a++)9(3l(2u[a])){2q[a]=2u[a].R.19;2u[a].R.19="2U"}g=j=="19"&&2q[2u.L-1]!=S?"2j":U.3M.3P(h,S).4y(j)||"";M(a=0;a<2q.L;a++)9(2q[a]!=S)2u[a].R.19=2q[a]}9(j=="1v"&&g=="")g="1"}J 9(h.43){H f=j.1o(/\\-(\\w)/g,G(m,c){I c.26()});g=h.43[j]||h.43[f];9(!/^\\d+(2I)?$/i.12(g)&&/^\\d/.12(g)){H k=h.R.1R;H e=h.4t.1R;h.4t.1R=h.43.1R;h.R.1R=g||0;g=h.R.74+"2I";h.R.1R=k;h.4t.1R=e}}I g},4I:G(a,e){H r=[];e=e||U;E.O(a,G(i,d){9(!d)I;9(d.1d==4X)d=d.3z();9(1n d=="1M"){d=d.1o(/(<(\\w+)[^>]*?)\\/>/g,G(m,a,b){I b.1U(/^(71|6Z|5D|6Y|49|9S|9P|3f|9K|9I)$/i)?m:a+"></"+b+">"});H s=E.33(d).2F(),1r=e.5r("1r"),2x=[];H c=!s.1e("<9D")&&[1,"<24>","</24>"]||!s.1e("<9A")&&[1,"<6S>","</6S>"]||s.1U(/^<(9x|1J|9u|9t|9s)/)&&[1,"<1F>","</1F>"]||!s.1e("<4k")&&[2,"<1F><1J>","</1J></1F>"]||(!s.1e("<9r")||!s.1e("<9q"))&&[3,"<1F><1J><4k>","</4k></1J></1F>"]||!s.1e("<5D")&&[2,"<1F><1J></1J><6L>","</6L></1F>"]||E.V.1g&&[1,"1r<1r>","</1r>"]||[0,"",""];1r.3D=c[1]+d+c[2];1Y(c[0]--)1r=1r.5k;9(E.V.1g){9(!s.1e("<1F")&&s.1e("<1J")<0)2x=1r.1t&&1r.1t.2X;J 9(c[1]=="<1F>"&&s.1e("<1J")<0)2x=1r.2X;M(H n=2x.L-1;n>=0;--n)9(E.Y(2x[n],"1J")&&!2x[n].2X.L)2x[n].14.3k(2x[n]);9(/^\\s/.12(d))1r.38(e.6F(d.1U(/^\\s*/)[0]),1r.1t)}d=E.2h(1r.2X)}9(0===d.L&&(!E.Y(d,"3B")&&!E.Y(d,"24")))I;9(d[0]==11||E.Y(d,"3B")||d.W)r.1a(d);J r=E.1S(r,d)});I r},1y:G(c,d,a){H e=E.4a(c)?{}:E.5o;9(d=="29"&&E.V.1H)c.14.4z;9(e[d]){9(a!=11)c[e[d]]=a;I c[e[d]]}J 9(E.V.1g&&d=="R")I E.1y(c.R,"9g",a);J 9(a==11&&E.V.1g&&E.Y(c,"3B")&&(d=="9e"||d=="9d"))I c.9b(d).6x;J 9(c.34){9(a!=11){9(d=="N"&&E.Y(c,"49")&&c.14)6E"N 96 94\'t 93 92";c.90(d,a)}9(E.V.1g&&/6B|3g/.12(d)&&!E.4a(c))I c.4l(d,2);I c.4l(d)}J{9(d=="1v"&&E.V.1g){9(a!=11){c.69=1;c.1A=(c.1A||"").1o(/6A\\([^)]*\\)/,"")+(3K(a).3z()=="8V"?"":"6A(1v="+a*6z+")")}I c.1A?(3K(c.1A.1U(/1v=([^)]*)/)[1])/6z).3z():""}d=d.1o(/-([a-z])/8T,G(z,b){I b.26()});9(a!=11)c[d]=a;I c[d]}},33:G(t){I(t||"").1o(/^\\s+|\\s+$/g,"")},2h:G(a){H r=[];9(1n a!="8Q")M(H i=0,2g=a.L;i<2g;i++)r.1a(a[i]);J r=a.2s(0);I r},2S:G(b,a){M(H i=0,2g=a.L;i<2g;i++)9(a[i]==b)I i;I-1},1S:G(a,b){9(E.V.1g){M(H i=0;b[i];i++)9(b[i].1z!=8)a.1a(b[i])}J M(H i=0;b[i];i++)a.1a(b[i]);I a},4V:G(b){H r=[],2f={};2c{M(H i=0,6P=b.L;i<6P;i++){H a=E.K(b[i]);9(!2f[a]){2f[a]=Q;r.1a(b[i])}}}27(e){r=b}I r},2T:G(b,a,c){9(1n a=="1M")a=3p("P||G(a,i){I "+a+"}");H d=[];M(H i=0,4m=b.L;i<4m;i++)9(!c&&a(b[i],i)||c&&!a(b[i],i))d.1a(b[i]);I d},1W:G(c,b){9(1n b=="1M")b=3p("P||G(a){I "+b+"}");H d=[];M(H i=0,4m=c.L;i<4m;i++){H a=b(c[i],i);9(a!==S&&a!=11){9(a.1d!=1C)a=[a];d=d.8O(a)}}I d}});H v=8M.8K.2F();E.V={4f:(v.1U(/.+(?:8I|8H|8F|8E)[\\/: ]([\\d.]+)/)||[])[1],1H:/6T/.12(v),3a:/3a/.12(v),1g:/1g/.12(v)&&!/3a/.12(v),39:/39/.12(v)&&!/(8B|6T)/.12(v)};H y=E.V.1g?"4h":"5g";E.1i({5f:!E.V.1g||U.8A=="8z",4h:E.V.1g?"4h":"5g",5o:{"M":"8y","8x":"1m","4r":y,5g:y,4h:y,3D:"3D",1m:"1m",1N:"1N",36:"36",2K:"2K",8w:"8u",29:"29",8t:"8s"}});E.O({1D:"a.14",8r:"16.4e(a,\'14\')",8q:"16.2R(a,2,\'2i\')",8o:"16.2R(a,2,\'4c\')",8n:"16.4e(a,\'2i\')",8m:"16.4e(a,\'4c\')",8l:"16.5c(a.14.1t,a)",8j:"16.5c(a.1t)",6p:"16.Y(a,\'8i\')?a.8f||a.8e.U:16.2h(a.2X)"},G(i,n){E.1b[i]=G(a){H b=E.1W(6,n);9(a&&1n a=="1M")b=E.3G(a,b);I 6.2v(E.4V(b))}});E.O({5P:"3e",8d:"6k",38:"6g",8c:"53",8b:"6H"},G(i,n){E.1b[i]=G(){H a=1k;I 6.O(G(){M(H j=0,2g=a.L;j<2g;j++)E(a[j])[n](6)})}});E.O({5X:G(a){E.1y(6,a,"");6.54(a)},8a:G(c){E.1m.1f(6,c)},89:G(c){E.1m.2e(6,c)},88:G(c){E.1m[E.1m.3t(6,c)?"2e":"1f"](6,c)},2e:G(a){9(!a||E.1A(a,[6]).r.L){E.30(6);6.14.3k(6)}},4o:G(){E("*",6).O(G(){E.30(6)});1Y(6.1t)6.3k(6.1t)}},G(i,n){E.1b[i]=G(){I 6.O(n,1k)}});E.O(["87","61"],G(i,a){H n=a.2F();E.1b[n]=G(h){I 6[0]==17?E.V.1H&&3r["86"+a]||E.5f&&32.2Y(U.35["59"+a],U.1K["59"+a])||U.1K["59"+a]:6[0]==U?32.2Y(U.1K["6n"+a],U.1K["6m"+a]):h==11?(6.L?E.18(6[0],n):S):6.18(n,h.1d==3T?h:h+"2I")}});H C=E.V.1H&&3q(E.V.4f)<85?"(?:[\\\\w*56-]|\\\\\\\\.)":"(?:[\\\\w\\84-\\83*56-]|\\\\\\\\.)",6j=1q 47("^>\\\\s*("+C+"+)"),6i=1q 47("^("+C+"+)(#)("+C+"+)"),6h=1q 47("^([#.]?)("+C+"*)");E.1i({55:{"":"m[2]==\'*\'||16.Y(a,m[2])","#":"a.4l(\'1T\')==m[2]",":":{81:"i<m[3]-0",7Z:"i>m[3]-0",2R:"m[3]-0==i",7Y:"m[3]-0==i",3o:"i==0",3n:"i==r.L-1",6f:"i%2==0",6d:"i%2","3o-46":"a.14.4q(\'*\')[0]==a","3n-46":"16.2R(a.14.5k,1,\'4c\')==a","7X-46":"!16.2R(a.14.5k,2,\'4c\')",1D:"a.1t",4o:"!a.1t",7W:"(a.6s||a.7V||\'\').1e(m[3])>=0",3X:\'"1O"!=a.N&&16.18(a,"19")!="2j"&&16.18(a,"4v")!="1O"\',1O:\'"1O"==a.N||16.18(a,"19")=="2j"||16.18(a,"4v")=="1O"\',7U:"!a.36",36:"a.36",2K:"a.2K",29:"a.29||16.1y(a,\'29\')",2t:"\'2t\'==a.N",4s:"\'4s\'==a.N",5u:"\'5u\'==a.N",52:"\'52\'==a.N",51:"\'51\'==a.N",50:"\'50\'==a.N",6c:"\'6c\'==a.N",6b:"\'6b\'==a.N",2y:\'"2y"==a.N||16.Y(a,"2y")\',49:"/49|24|6a|2y/i.12(a.Y)",3t:"16.1X(m[3],a).L",7R:"/h\\\\d/i.12(a.Y)",7P:"16.2T(16.2Z,G(1b){I a==1b.T;}).L"}},68:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,1q 47("^([:.#]*)("+C+"+)")],3G:G(a,c,b){H d,2b=[];1Y(a&&a!=d){d=a;H f=E.1A(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");2b=b?c=f.r:E.1S(2b,f.r)}I 2b},1X:G(t,o){9(1n t!="1M")I[t];9(o&&!o.1z)o=S;o=o||U;H d=[o],2f=[],3n;1Y(t&&3n!=t){H r=[];3n=t;t=E.33(t);H l=P;H g=6j;H m=g.2L(t);9(m){H p=m[1].26();M(H i=0;d[i];i++)M(H c=d[i].1t;c;c=c.2i)9(c.1z==1&&(p=="*"||c.Y.26()==p.26()))r.1a(c);d=r;t=t.1o(g,"");9(t.1e(" ")==0)6r;l=Q}J{g=/^([>+~])\\s*(\\w*)/i;9((m=g.2L(t))!=S){r=[];H p=m[2],1S={};m=m[1];M(H j=0,31=d.L;j<31;j++){H n=m=="~"||m=="+"?d[j].2i:d[j].1t;M(;n;n=n.2i)9(n.1z==1){H h=E.K(n);9(m=="~"&&1S[h])22;9(!p||n.Y.26()==p.26()){9(m=="~")1S[h]=Q;r.1a(n)}9(m=="+")22}}d=r;t=E.33(t.1o(g,""));l=Q}}9(t&&!l){9(!t.1e(",")){9(o==d[0])d.44();2f=E.1S(2f,d);r=d=[o];t=" "+t.67(1,t.L)}J{H k=6i;H m=k.2L(t);9(m){m=[0,m[2],m[3],m[1]]}J{k=6h;m=k.2L(t)}m[2]=m[2].1o(/\\\\/g,"");H f=d[d.L-1];9(m[1]=="#"&&f&&f.42&&!E.4a(f)){H q=f.42(m[2]);9((E.V.1g||E.V.3a)&&q&&1n q.1T=="1M"&&q.1T!=m[2])q=E(\'[@1T="\'+m[2]+\'"]\',f)[0];d=r=q&&(!m[3]||E.Y(q,m[3]))?[q]:[]}J{M(H i=0;d[i];i++){H a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];9(a=="*"&&d[i].Y.2F()=="5w")a="3f";r=E.1S(r,d[i].4q(a))}9(m[1]==".")r=E.4W(r,m[2]);9(m[1]=="#"){H e=[];M(H i=0;r[i];i++)9(r[i].4l("1T")==m[2]){e=[r[i]];22}r=e}d=r}t=t.1o(k,"")}}9(t){H b=E.1A(t,r);d=r=b.r;t=E.33(b.t)}}9(t)d=[];9(d&&o==d[0])d.44();2f=E.1S(2f,d);I 2f},4W:G(r,m,a){m=" "+m+" ";H c=[];M(H i=0;r[i];i++){H b=(" "+r[i].1m+" ").1e(m)>=0;9(!a&&b||a&&!b)c.1a(r[i])}I c},1A:G(t,r,h){H d;1Y(t&&t!=d){d=t;H p=E.68,m;M(H i=0;p[i];i++){m=p[i].2L(t);9(m){t=t.7O(m[0].L);m[2]=m[2].1o(/\\\\/g,"");22}}9(!m)22;9(m[1]==":"&&m[2]=="5T")r=E.1A(m[3],r,Q).r;J 9(m[1]==".")r=E.4W(r,m[2],h);J 9(m[1]=="["){H g=[],N=m[3];M(H i=0,31=r.L;i<31;i++){H a=r[i],z=a[E.5o[m[2]]||m[2]];9(z==S||/6B|3g|29/.12(m[2]))z=E.1y(a,m[2])||\'\';9((N==""&&!!z||N=="="&&z==m[5]||N=="!="&&z!=m[5]||N=="^="&&z&&!z.1e(m[5])||N=="$="&&z.67(z.L-m[5].L)==m[5]||(N=="*="||N=="~=")&&z.1e(m[5])>=0)^h)g.1a(a)}r=g}J 9(m[1]==":"&&m[2]=="2R-46"){H e={},g=[],12=/(\\d*)n\\+?(\\d*)/.2L(m[3]=="6f"&&"2n"||m[3]=="6d"&&"2n+1"||!/\\D/.12(m[3])&&"n+"+m[3]||m[3]),3o=(12[1]||1)-0,d=12[2]-0;M(H i=0,31=r.L;i<31;i++){H j=r[i],14=j.14,1T=E.K(14);9(!e[1T]){H c=1;M(H n=14.1t;n;n=n.2i)9(n.1z==1)n.4U=c++;e[1T]=Q}H b=P;9(3o==1){9(d==0||j.4U==d)b=Q}J 9((j.4U+d)%3o==0)b=Q;9(b^h)g.1a(j)}r=g}J{H f=E.55[m[1]];9(1n f!="1M")f=E.55[m[1]][m[2]];f=3p("P||G(a,i){I "+f+"}");r=E.2T(r,f,h)}}I{r:r,t:t}},4e:G(b,c){H d=[];H a=b[c];1Y(a&&a!=U){9(a.1z==1)d.1a(a);a=a[c]}I d},2R:G(a,e,c,b){e=e||1;H d=0;M(;a;a=a[c])9(a.1z==1&&++d==e)22;I a},5c:G(n,a){H r=[];M(;n;n=n.2i){9(n.1z==1&&(!a||n!=a))r.1a(n)}I r}});E.1h={1f:G(g,e,c,h){9(E.V.1g&&g.41!=11)g=17;9(!c.2r)c.2r=6.2r++;9(h!=11){H d=c;c=G(){I d.15(6,1k)};c.K=h;c.2r=d.2r}H i=e.2p(".");e=i[0];c.N=i[1];H b=E.K(g,"2A")||E.K(g,"2A",{});H f=E.K(g,"2m",G(){H a;9(1n E=="11"||E.1h.4T)I a;a=E.1h.2m.15(g,1k);I a});H j=b[e];9(!j){j=b[e]={};9(g.4R)g.4R(e,f,P);J g.7N("40"+e,f)}j[c.2r]=c;6.23[e]=Q},2r:1,23:{},2e:G(d,c,b){H e=E.K(d,"2A"),2O,4J;9(1n c=="1M"){H a=c.2p(".");c=a[0]}9(e){9(c&&c.N){b=c.4P;c=c.N}9(!c){M(c 1j e)6.2e(d,c)}J 9(e[c]){9(b)2G e[c][b.2r];J M(b 1j e[c])9(!a[1]||e[c][b].N==a[1])2G e[c][b];M(2O 1j e[c])22;9(!2O){9(d.4O)d.4O(c,E.K(d,"2m"),P);J d.7M("40"+c,E.K(d,"2m"));2O=S;2G e[c]}}M(2O 1j e)22;9(!2O){E.30(d,"2A");E.30(d,"2m")}}},1L:G(d,b,e,c,f){b=E.2h(b||[]);9(!e){9(6.23[d])E("*").1f([17,U]).1L(d,b)}J{H a,2O,1b=E.1p(e[d]||S),4N=!b[0]||!b[0].2B;9(4N)b.4Z(6.4M({N:d,2o:e}));9(E.1p(E.K(e,"2m")))a=E.K(e,"2m").15(e,b);9(!1b&&e["40"+d]&&e["40"+d].15(e,b)===P)a=P;9(4N)b.44();9(f&&f.15(e,b)===P)a=P;9(1b&&c!==P&&a!==P&&!(E.Y(e,\'a\')&&d=="4L")){6.4T=Q;e[d]()}6.4T=P}I a},2m:G(d){H a;d=E.1h.4M(d||17.1h||{});H b=d.N.2p(".");d.N=b[0];H c=E.K(6,"2A")&&E.K(6,"2A")[d.N],3m=1C.3x.2s.3c(1k,1);3m.4Z(d);M(H j 1j c){3m[0].4P=c[j];3m[0].K=c[j].K;9(!b[1]||c[j].N==b[1]){H e=c[j].15(6,3m);9(a!==P)a=e;9(e===P){d.2B();d.3L()}}}9(E.V.1g)d.2o=d.2B=d.3L=d.4P=d.K=S;I a},4M:G(c){H a=c;c=E.1i({},a);c.2B=G(){9(a.2B)a.2B();a.7I=P};c.3L=G(){9(a.3L)a.3L();a.7H=Q};9(!c.2o&&c.64)c.2o=c.64;9(E.V.1H&&c.2o.1z==3)c.2o=a.2o.14;9(!c.4H&&c.4G)c.4H=c.4G==c.2o?c.7E:c.4G;9(c.63==S&&c.62!=S){H e=U.35,b=U.1K;c.63=c.62+(e&&e.2D||b.2D||0);c.7C=c.7B+(e&&e.2z||b.2z||0)}9(!c.3R&&(c.60||c.5Z))c.3R=c.60||c.5Z;9(!c.5Y&&c.5W)c.5Y=c.5W;9(!c.3R&&c.2y)c.3R=(c.2y&1?1:(c.2y&2?3:(c.2y&4?2:0)));I c}};E.1b.1i({3Q:G(c,a,b){I c=="5V"?6.2P(c,a,b):6.O(G(){E.1h.1f(6,c,b||a,b&&a)})},2P:G(d,b,c){I 6.O(G(){E.1h.1f(6,d,G(a){E(6).5U(a);I(c||b).15(6,1k)},c&&b)})},5U:G(a,b){I 6.O(G(){E.1h.2e(6,a,b)})},1L:G(c,a,b){I 6.O(G(){E.1h.1L(c,a,6,Q,b)})},7y:G(c,a,b){9(6[0])I E.1h.1L(c,a,6[0],P,b)},25:G(){H a=1k;I 6.4L(G(e){6.4E=0==6.4E?1:0;e.2B();I a[6.4E].15(6,[e])||P})},7x:G(f,g){G 4x(e){H p=e.4H;1Y(p&&p!=6)2c{p=p.14}27(e){p=6};9(p==6)I P;I(e.N=="4w"?f:g).15(6,[e])}I 6.4w(4x).5S(4x)},2d:G(f){5R();9(E.3W)f.15(U,[E]);J E.3i.1a(G(){I f.15(6,[E])});I 6}});E.1i({3W:P,3i:[],2d:G(){9(!E.3W){E.3W=Q;9(E.3i){E.O(E.3i,G(){6.15(U)});E.3i=S}9(E.V.39||E.V.3a)U.4O("5Q",E.2d,P);9(!17.7v.L)E(17).37(G(){E("#4C").2e()})}}});E.O(("7u,7o,37,7n,6n,5V,4L,7m,"+"7l,7j,7i,4w,5S,7p,24,"+"50,7q,7r,7s,3U").2p(","),G(i,o){E.1b[o]=G(f){I f?6.3Q(o,f):6.1L(o)}});H x=P;G 5R(){9(x)I;x=Q;9(E.V.39||E.V.3a)U.4R("5Q",E.2d,P);J 9(E.V.1g){U.7e("<7d"+"7c 1T=4C 7b=Q "+"3g=//:><\\/1P>");H a=U.42("4C");9(a)a.5O=G(){9(6.2C!="1l")I;E.2d()};a=S}J 9(E.V.1H)E.4B=41(G(){9(U.2C=="5N"||U.2C=="1l"){4A(E.4B);E.4B=S;E.2d()}},10);E.1h.1f(17,"37",E.2d)}E.1b.1i({37:G(g,d,c){9(E.1p(g))I 6.3Q("37",g);H e=g.1e(" ");9(e>=0){H i=g.2s(e,g.L);g=g.2s(0,e)}c=c||G(){};H f="4F";9(d)9(E.1p(d)){c=d;d=S}J{d=E.3f(d);f="5M"}H h=6;E.3w({1u:g,N:f,K:d,1l:G(a,b){9(b=="1E"||b=="5L")h.4n(i?E("<1r/>").3e(a.4p.1o(/<1P(.|\\s)*?\\/1P>/g,"")).1X(i):a.4p);58(G(){h.O(c,[a.4p,b,a])},13)}});I 6},7a:G(){I E.3f(6.5K())},5K:G(){I 6.1W(G(){I E.Y(6,"3B")?E.2h(6.79):6}).1A(G(){I 6.2J&&!6.36&&(6.2K||/24|6a/i.12(6.Y)||/2t|1O|51/i.12(6.N))}).1W(G(i,c){H b=E(6).2V();I b==S?S:b.1d==1C?E.1W(b,G(i,a){I{2J:c.2J,1N:a}}):{2J:c.2J,1N:b}}).28()}});E.O("5J,5I,5H,6e,5G,5F".2p(","),G(i,o){E.1b[o]=G(f){I 6.3Q(o,f)}});H B=(1q 3v).3u();E.1i({28:G(d,b,a,c){9(E.1p(b)){a=b;b=S}I E.3w({N:"4F",1u:d,K:b,1E:a,1Z:c})},78:G(b,a){I E.28(b,S,a,"1P")},77:G(c,b,a){I E.28(c,b,a,"3S")},76:G(d,b,a,c){9(E.1p(b)){a=b;b={}}I E.3w({N:"5M",1u:d,K:b,1E:a,1Z:c})},80:G(a){E.1i(E.4u,a)},4u:{23:Q,N:"4F",2H:0,5E:"75/x-73-3B-72",6l:Q,3h:Q,K:S},4b:{},3w:G(s){H f,48=/=(\\?|%3F)/g,1s,K;s=E.1i(Q,s,E.1i(Q,{},E.4u,s));9(s.K&&s.6l&&1n s.K!="1M")s.K=E.3f(s.K);H q=s.1u.1e("?");9(q>-1){s.K=(s.K?s.K+"&":"")+s.1u.2s(q+1);s.1u=s.1u.2s(0,q)}9(s.1Z=="5b"){9(!s.K||!s.K.1U(48))s.K=(s.K?s.K+"&":"")+(s.5b||"6X")+"=?";s.1Z="3S"}9(s.1Z=="3S"&&s.K&&s.K.1U(48)){f="5b"+B++;s.K=s.K.1o(48,"="+f);s.1Z="1P";17[f]=G(a){K=a;1E();17[f]=11;2c{2G 17[f]}27(e){}}}9(s.1Z=="1P"&&s.1I==S)s.1I=P;9(s.1I===P&&s.N.2F()=="28")s.K=(s.K?s.K+"&":"")+"56="+(1q 3v()).3u();9(s.K&&s.N.2F()=="28"){s.1u+="?"+s.K;s.K=S}9(s.23&&!E.5a++)E.1h.1L("5J");9(!s.1u.1e("6W")&&s.1Z=="1P"){H h=U.4q("8g")[0];H g=U.5r("1P");g.3g=s.1u;9(!f&&(s.1E||s.1l)){H j=P;g.9Q=g.5O=G(){9(!j&&(!6.2C||6.2C=="5N"||6.2C=="1l")){j=Q;1E();1l();h.3k(g)}}}h.57(g);I}H k=P;H i=17.6V?1q 6V("9O.9N"):1q 6U();i.9M(s.N,s.1u,s.3h);9(s.K)i.5B("9J-9H",s.5E);9(s.5A)i.5B("9G-5z-9F",E.4b[s.1u]||"9E, 9C 9B 9z 5v:5v:5v 9y");i.5B("X-9w-9v","6U");9(s.6R)s.6R(i);9(s.23)E.1h.1L("5F",[i,s]);H c=G(a){9(!k&&i&&(i.2C==4||a=="2H")){k=Q;9(d){4A(d);d=S}1s=a=="2H"&&"2H"||!E.6Q(i)&&"3U"||s.5A&&E.6O(i,s.1u)&&"5L"||"1E";9(1s=="1E"){2c{K=E.6N(i,s.1Z)}27(e){1s="5t"}}9(1s=="1E"){H b;2c{b=i.5i("6M-5z")}27(e){}9(s.5A&&b)E.4b[s.1u]=b;9(!f)1E()}J E.5s(s,i,1s);1l();9(s.3h)i=S}};9(s.3h){H d=41(c,13);9(s.2H>0)58(G(){9(i){i.9p();9(!k)c("2H")}},s.2H)}2c{i.9n(s.K)}27(e){E.5s(s,i,S,e)}9(!s.3h)c();I i;G 1E(){9(s.1E)s.1E(K,1s);9(s.23)E.1h.1L("5G",[i,s])}G 1l(){9(s.1l)s.1l(i,1s);9(s.23)E.1h.1L("5H",[i,s]);9(s.23&&!--E.5a)E.1h.1L("5I")}},5s:G(s,a,b,e){9(s.3U)s.3U(a,b,e);9(s.23)E.1h.1L("6e",[a,s,e])},5a:0,6Q:G(r){2c{I!r.1s&&9l.9k=="52:"||(r.1s>=6K&&r.1s<9j)||r.1s==6J||E.V.1H&&r.1s==11}27(e){}I P},6O:G(a,c){2c{H b=a.5i("6M-5z");I a.1s==6J||b==E.4b[c]||E.V.1H&&a.1s==11}27(e){}I P},6N:G(r,b){H c=r.5i("9i-N");H d=b=="6y"||!b&&c&&c.1e("6y")>=0;H a=d?r.9h:r.4p;9(d&&a.35.34=="5t")6E"5t";9(b=="1P")E.5h(a);9(b=="3S")a=3p("("+a+")");I a},3f:G(a){H s=[];9(a.1d==1C||a.4d)E.O(a,G(){s.1a(3b(6.2J)+"="+3b(6.1N))});J M(H j 1j a)9(a[j]&&a[j].1d==1C)E.O(a[j],G(){s.1a(3b(j)+"="+3b(6))});J s.1a(3b(j)+"="+3b(a[j]));I s.65("&").1o(/%20/g,"+")}});E.1b.1i({1x:G(b,a){I b?6.1V({1G:"1x",2E:"1x",1v:"1x"},b,a):6.1A(":1O").O(G(){6.R.19=6.3d?6.3d:"";9(E.18(6,"19")=="2j")6.R.19="2U"}).1B()},1w:G(b,a){I b?6.1V({1G:"1w",2E:"1w",1v:"1w"},b,a):6.1A(":3X").O(G(){6.3d=6.3d||E.18(6,"19");9(6.3d=="2j")6.3d="2U";6.R.19="2j"}).1B()},6G:E.1b.25,25:G(a,b){I E.1p(a)&&E.1p(b)?6.6G(a,b):a?6.1V({1G:"25",2E:"25",1v:"25"},a,b):6.O(G(){E(6)[E(6).3j(":1O")?"1x":"1w"]()})},9c:G(b,a){I 6.1V({1G:"1x"},b,a)},9a:G(b,a){I 6.1V({1G:"1w"},b,a)},99:G(b,a){I 6.1V({1G:"25"},b,a)},98:G(b,a){I 6.1V({1v:"1x"},b,a)},97:G(b,a){I 6.1V({1v:"1w"},b,a)},95:G(c,a,b){I 6.1V({1v:a},c,b)},1V:G(j,h,g,f){H i=E.6C(h,g,f);I 6[i.3I===P?"O":"3I"](G(){i=E.1i({},i);H d=E(6).3j(":1O"),3r=6;M(H p 1j j){9(j[p]=="1w"&&d||j[p]=="1x"&&!d)I E.1p(i.1l)&&i.1l.15(6);9(p=="1G"||p=="2E"){i.19=E.18(6,"19");i.2N=6.R.2N}}9(i.2N!=S)6.R.2N="1O";i.3H=E.1i({},j);E.O(j,G(c,a){H e=1q E.2w(3r,i,c);9(/25|1x|1w/.12(a))e[a=="25"?d?"1x":"1w":a](j);J{H b=a.3z().1U(/^([+-]?)([\\d.]+)(.*)$/),1Q=e.2b(Q)||0;9(b){1B=3K(b[2]),2k=b[3]||"2I";9(2k!="2I"){3r.R[c]=1B+2k;1Q=(1B/e.2b(Q))*1Q;3r.R[c]=1Q+2k}9(b[1])1B=((b[1]=="-"?-1:1)*1B)+1Q;e.3J(1Q,1B,2k)}J e.3J(1Q,a,"")}});I Q})},3I:G(a,b){9(!b){b=a;a="2w"}9(!1k.L)I A(6[0],a);I 6.O(G(){9(b.1d==1C)A(6,a,b);J{A(6,a).1a(b);9(A(6,a).L==1)b.15(6)}})},9f:G(){H a=E.2Z;I 6.O(G(){M(H i=0;i<a.L;i++)9(a[i].T==6)a.6D(i--,1)}).5p()}});H A=G(b,c,a){9(!b)I;H q=E.K(b,c+"3I");9(!q||a)q=E.K(b,c+"3I",a?E.2h(a):[]);I q};E.1b.5p=G(a){a=a||"2w";I 6.O(G(){H q=A(6,a);q.44();9(q.L)q[0].15(6)})};E.1i({6C:G(b,a,c){H d=b&&b.1d==8Z?b:{1l:c||!c&&a||E.1p(b)&&b,2a:b,3E:c&&a||a&&a.1d!=8Y&&a};d.2a=(d.2a&&d.2a.1d==4X?d.2a:{8X:8W,8U:6K}[d.2a])||9o;d.3C=d.1l;d.1l=G(){E(6).5p();9(E.1p(d.3C))d.3C.15(6)};I d},3E:{6I:G(p,n,b,a){I b+a*p},5q:G(p,n,b,a){I((-32.8S(p*32.8R)/2)+0.5)*a+b}},2Z:[],2w:G(b,c,a){6.W=c;6.T=b;6.1c=a;9(!c.3A)c.3A={}}});E.2w.3x={4j:G(){9(6.W.2M)6.W.2M.15(6.T,[6.2l,6]);(E.2w.2M[6.1c]||E.2w.2M.6w)(6);9(6.1c=="1G"||6.1c=="2E")6.T.R.19="2U"},2b:G(a){9(6.T[6.1c]!=S&&6.T.R[6.1c]==S)I 6.T[6.1c];H r=3K(E.3O(6.T,6.1c,a));I r&&r>-8P?r:3K(E.18(6.T,6.1c))||0},3J:G(c,b,e){6.5n=(1q 3v()).3u();6.1Q=c;6.1B=b;6.2k=e||6.2k||"2I";6.2l=6.1Q;6.4g=6.4i=0;6.4j();H f=6;G t(){I f.2M()}t.T=6.T;E.2Z.1a(t);9(E.2Z.L==1){H d=41(G(){H a=E.2Z;M(H i=0;i<a.L;i++)9(!a[i]())a.6D(i--,1);9(!a.L)4A(d)},13)}},1x:G(){6.W.3A[6.1c]=E.1y(6.T.R,6.1c);6.W.1x=Q;6.3J(0,6.2b());9(6.1c=="2E"||6.1c=="1G")6.T.R[6.1c]="8N";E(6.T).1x()},1w:G(){6.W.3A[6.1c]=E.1y(6.T.R,6.1c);6.W.1w=Q;6.3J(6.2b(),0)},2M:G(){H t=(1q 3v()).3u();9(t>6.W.2a+6.5n){6.2l=6.1B;6.4g=6.4i=1;6.4j();6.W.3H[6.1c]=Q;H a=Q;M(H i 1j 6.W.3H)9(6.W.3H[i]!==Q)a=P;9(a){9(6.W.19!=S){6.T.R.2N=6.W.2N;6.T.R.19=6.W.19;9(E.18(6.T,"19")=="2j")6.T.R.19="2U"}9(6.W.1w)6.T.R.19="2j";9(6.W.1w||6.W.1x)M(H p 1j 6.W.3H)E.1y(6.T.R,p,6.W.3A[p])}9(a&&E.1p(6.W.1l))6.W.1l.15(6.T);I P}J{H n=t-6.5n;6.4i=n/6.W.2a;6.4g=E.3E[6.W.3E||(E.3E.5q?"5q":"6I")](6.4i,n,0,1,6.W.2a);6.2l=6.1Q+((6.1B-6.1Q)*6.4g);6.4j()}I Q}};E.2w.2M={2D:G(a){a.T.2D=a.2l},2z:G(a){a.T.2z=a.2l},1v:G(a){E.1y(a.T.R,"1v",a.2l)},6w:G(a){a.T.R[a.1c]=a.2l+a.2k}};E.1b.6m=G(){H c=0,3y=0,T=6[0],5m;9(T)8L(E.V){H b=E.18(T,"2W")=="4D",1D=T.14,21=T.21,2Q=T.3N,5y=1H&&!b&&3q(4f)<8J;9(T.6v){5x=T.6v();1f(5x.1R+32.2Y(2Q.35.2D,2Q.1K.2D),5x.3y+32.2Y(2Q.35.2z,2Q.1K.2z));9(1g){H d=E("4n").18("9L");d=(d=="8G"||E.5f&&3q(4f)>=7)&&2||d;1f(-d,-d)}}J{1f(T.5j,T.5C);1Y(21){1f(21.5j,21.5C);9(39&&/^t[d|h]$/i.12(1D.34)||!5y)d(21);9(5y&&!b&&E.18(21,"2W")=="4D")b=Q;21=21.21}1Y(1D.34&&/^1K|4n$/i.12(1D.34)){9(/^8D|1F-9R.*$/i.12(E.18(1D,"19")))1f(-1D.2D,-1D.2z);9(39&&E.18(1D,"2N")!="3X")d(1D);1D=1D.14}9(1H&&b)1f(-2Q.1K.5j,-2Q.1K.5C)}5m={3y:3y,1R:c}}I 5m;G d(a){1f(E.18(a,"8C"),E.18(a,"9T"))}G 1f(l,t){c+=3q(l)||0;3y+=3q(t)||0}}})();',62,615,'||||||this|||if|||||||||||||||||||||||||||||||||function|var|return|else|data|length|for|type|each|false|true|style|null|elem|document|browser|options||nodeName|||undefined|test||parentNode|apply|jQuery|window|css|display|push|fn|prop|constructor|indexOf|add|msie|event|extend|in|arguments|complete|className|typeof|replace|isFunction|new|div|status|firstChild|url|opacity|hide|show|attr|nodeType|filter|end|Array|parent|success|table|height|safari|cache|tbody|body|trigger|string|value|hidden|script|start|left|merge|id|match|animate|map|find|while|dataType||offsetParent|break|global|select|toggle|toUpperCase|catch|get|selected|duration|cur|try|ready|remove|done|al|makeArray|nextSibling|none|unit|now|handle||target|split|swap|guid|slice|text|stack|pushStack|fx|tb|button|scrollTop|events|preventDefault|readyState|scrollLeft|width|toLowerCase|delete|timeout|px|name|checked|exec|step|overflow|ret|one|doc|nth|inArray|grep|block|val|position|childNodes|max|timers|removeData|rl|Math|trim|tagName|documentElement|disabled|load|insertBefore|mozilla|opera|encodeURIComponent|call|oldblock|append|param|src|async|readyList|is|removeChild|color|args|last|first|eval|parseInt|self|domManip|has|getTime|Date|ajax|prototype|top|toString|orig|form|old|innerHTML|easing||multiFilter|curAnim|queue|custom|parseFloat|stopPropagation|defaultView|ownerDocument|curCSS|getComputedStyle|bind|which|json|String|error|static|isReady|visible|oWidth|oHeight|on|setInterval|getElementById|currentStyle|shift|ol|child|RegExp|jsre|input|isXMLDoc|lastModified|previousSibling|jquery|dir|version|pos|styleFloat|state|update|tr|getAttribute|el|html|empty|responseText|getElementsByTagName|float|radio|runtimeStyle|ajaxSettings|visibility|mouseover|handleHover|getPropertyValue|selectedIndex|clearInterval|safariTimer|__ie_init|absolute|lastToggle|GET|fromElement|relatedTarget|clean|index|init|click|fix|evt|removeEventListener|handler|andSelf|addEventListener|cloneNode|triggered|nodeIndex|unique|classFilter|Number|prevObject|unshift|submit|password|file|after|removeAttribute|expr|_|appendChild|setTimeout|client|active|jsonp|sibling|win|deep|boxModel|cssFloat|globalEval|getResponseHeader|offsetLeft|lastChild|wrapAll|results|startTime|props|dequeue|swing|createElement|handleError|parsererror|checkbox|00|object|box|safari2|Modified|ifModified|setRequestHeader|offsetTop|col|contentType|ajaxSend|ajaxSuccess|ajaxComplete|ajaxStop|ajaxStart|serializeArray|notmodified|POST|loaded|onreadystatechange|appendTo|DOMContentLoaded|bindReady|mouseout|not|unbind|unload|ctrlKey|removeAttr|metaKey|keyCode|charCode|Width|clientX|pageX|srcElement|join|outerHTML|substr|parse|zoom|textarea|reset|image|odd|ajaxError|even|before|quickClass|quickID|quickChild|prepend|processData|offset|scroll|execScript|contents|uuid|continue|textContent|clone|setArray|getBoundingClientRect|_default|nodeValue|xml|100|alpha|href|speed|splice|throw|createTextNode|_toggle|replaceWith|linear|304|200|colgroup|Last|httpData|httpNotModified|fl|httpSuccess|beforeSend|fieldset|webkit|XMLHttpRequest|ActiveXObject|http|callback|img|br|attributes|abbr|urlencoded|www|pixelLeft|application|post|getJSON|getScript|elements|serialize|defer|ipt|scr|write|clientWidth|hasClass|clientHeight|mousemove|mouseup|relative|mousedown|dblclick|resize|focus|change|keydown|keypress|keyup|FORM|blur|frames|right|hover|triggerHandler|offsetWidth|offsetHeight|clientY|pageY|border|toElement|padding|Left|cancelBubble|returnValue|Right|Bottom|Top|detachEvent|attachEvent|substring|animated|line|header|weight|font|enabled|innerText|contains|only|eq|gt|ajaxSetup|lt|size|uFFFF|u0128|417|inner|Height|toggleClass|removeClass|addClass|replaceAll|insertAfter|prependTo|contentWindow|contentDocument|head|wrap|iframe|children|noConflict|siblings|prevAll|nextAll|prev|wrapInner|next|parents|maxLength|maxlength|readOnly|Boolean|readonly|class|htmlFor|CSS1Compat|compatMode|compatible|borderLeftWidth|inline|ie|ra|medium|it|rv|522|userAgent|with|navigator|1px|concat|10000|array|PI|cos|ig|fast|NaN|600|slow|Function|Object|setAttribute|reverse|changed|be|can|fadeTo|property|fadeOut|fadeIn|slideToggle|slideUp|getAttributeNode|slideDown|method|action|stop|cssText|responseXML|content|300|protocol|location|option|send|400|abort|th|td|cap|colg|tfoot|With|Requested|thead|GMT|1970|leg|Jan|01|opt|Thu|Since|If|Type|area|Content|hr|borderWidth|open|XMLHTTP|Microsoft|meta|onload|row|link|borderTopWidth|specified'.split('|'),0,{}))
|
281
|
+
</script>
|
282
|
+
<script type="text/javascript">
|
283
|
+
jQuery.cookie = function(name, value, options) {
|
284
|
+
if (typeof value != 'undefined') { // name and value given, set cookie
|
285
|
+
options = options || {};
|
286
|
+
if (value === null) {
|
287
|
+
value = '';
|
288
|
+
options.expires = -1;
|
289
|
+
}
|
290
|
+
var expires = '';
|
291
|
+
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
|
292
|
+
var date;
|
293
|
+
if (typeof options.expires == 'number') {
|
294
|
+
date = new Date();
|
295
|
+
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
|
296
|
+
} else {
|
297
|
+
date = options.expires;
|
298
|
+
}
|
299
|
+
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
|
300
|
+
}
|
301
|
+
var path = options.path ? '; path=' + options.path : '';
|
302
|
+
var domain = options.domain ? '; domain=' + options.domain : '';
|
303
|
+
var secure = options.secure ? '; secure' : '';
|
304
|
+
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
|
305
|
+
} else { // only name given, get cookie
|
306
|
+
var cookieValue = null;
|
307
|
+
if (document.cookie && document.cookie != '') {
|
308
|
+
var cookies = document.cookie.split(';');
|
309
|
+
for (var i = 0; i < cookies.length; i++) {
|
310
|
+
var cookie = jQuery.trim(cookies[i]);
|
311
|
+
// Does this cookie string begin with the name we want?
|
312
|
+
if (cookie.substring(0, name.length + 1) == (name + '=')) {
|
313
|
+
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
|
314
|
+
break;
|
315
|
+
}
|
316
|
+
}
|
317
|
+
}
|
318
|
+
return cookieValue;
|
319
|
+
}
|
320
|
+
};
|
321
|
+
</script>
|
322
|
+
<script type="text/javascript">
|
323
|
+
(function($) {
|
324
|
+
|
325
|
+
$.extend($.fn, {
|
326
|
+
swapClass: function(c1, c2) {
|
327
|
+
var c1Elements = this.filter('.' + c1);
|
328
|
+
this.filter('.' + c2).removeClass(c2).addClass(c1);
|
329
|
+
c1Elements.removeClass(c1).addClass(c2);
|
330
|
+
return this;
|
331
|
+
},
|
332
|
+
replaceClass: function(c1, c2) {
|
333
|
+
return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
|
334
|
+
},
|
335
|
+
hoverClass: function(className) {
|
336
|
+
className = className || "hover";
|
337
|
+
return this.hover(function() {
|
338
|
+
$(this).addClass(className);
|
339
|
+
}, function() {
|
340
|
+
$(this).removeClass(className);
|
341
|
+
});
|
342
|
+
},
|
343
|
+
heightToggle: function(animated, callback) {
|
344
|
+
animated ?
|
345
|
+
this.animate({ height: "toggle" }, animated, callback) :
|
346
|
+
this.each(function(){
|
347
|
+
jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
|
348
|
+
if(callback)
|
349
|
+
callback.apply(this, arguments);
|
350
|
+
});
|
351
|
+
},
|
352
|
+
heightHide: function(animated, callback) {
|
353
|
+
if (animated) {
|
354
|
+
this.animate({ height: "hide" }, animated, callback);
|
355
|
+
} else {
|
356
|
+
this.hide();
|
357
|
+
if (callback)
|
358
|
+
this.each(callback);
|
359
|
+
}
|
360
|
+
},
|
361
|
+
prepareBranches: function(settings) {
|
362
|
+
if (!settings.prerendered) {
|
363
|
+
// mark last tree items
|
364
|
+
this.filter(":last-child:not(ul)").addClass(CLASSES.last);
|
365
|
+
// collapse whole tree, or only those marked as closed, anyway except those marked as open
|
366
|
+
this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
|
367
|
+
}
|
368
|
+
// return all items with sublists
|
369
|
+
return this.filter(":has(>ul)");
|
370
|
+
},
|
371
|
+
applyClasses: function(settings, toggler) {
|
372
|
+
this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
|
373
|
+
toggler.apply($(this).next());
|
374
|
+
}).add( $("a", this) ).hoverClass();
|
375
|
+
|
376
|
+
if (!settings.prerendered) {
|
377
|
+
// handle closed ones first
|
378
|
+
this.filter(":has(>ul:hidden)")
|
379
|
+
.addClass(CLASSES.expandable)
|
380
|
+
.replaceClass(CLASSES.last, CLASSES.lastExpandable);
|
381
|
+
|
382
|
+
// handle open ones
|
383
|
+
this.not(":has(>ul:hidden)")
|
384
|
+
.addClass(CLASSES.collapsable)
|
385
|
+
.replaceClass(CLASSES.last, CLASSES.lastCollapsable);
|
386
|
+
|
387
|
+
// create hitarea
|
388
|
+
this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea).each(function() {
|
389
|
+
var classes = "";
|
390
|
+
$.each($(this).parent().attr("class").split(" "), function() {
|
391
|
+
classes += this + "-hitarea ";
|
392
|
+
});
|
393
|
+
$(this).addClass( classes );
|
394
|
+
});
|
395
|
+
}
|
396
|
+
|
397
|
+
// apply event to hitarea
|
398
|
+
this.find("div." + CLASSES.hitarea).click( toggler );
|
399
|
+
},
|
400
|
+
treeview: function(settings) {
|
401
|
+
|
402
|
+
settings = $.extend({
|
403
|
+
cookieId: "treeview"
|
404
|
+
}, settings);
|
405
|
+
|
406
|
+
if (settings.add) {
|
407
|
+
return this.trigger("add", [settings.add]);
|
408
|
+
}
|
409
|
+
|
410
|
+
if ( settings.toggle ) {
|
411
|
+
var callback = settings.toggle;
|
412
|
+
settings.toggle = function() {
|
413
|
+
return callback.apply($(this).parent()[0], arguments);
|
414
|
+
};
|
415
|
+
}
|
416
|
+
|
417
|
+
// factory for treecontroller
|
418
|
+
function treeController(tree, control) {
|
419
|
+
// factory for click handlers
|
420
|
+
function handler(filter) {
|
421
|
+
return function() {
|
422
|
+
// reuse toggle event handler, applying the elements to toggle
|
423
|
+
// start searching for all hitareas
|
424
|
+
toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
|
425
|
+
// for plain toggle, no filter is provided, otherwise we need to check the parent element
|
426
|
+
return filter ? $(this).parent("." + filter).length : true;
|
427
|
+
}) );
|
428
|
+
return false;
|
429
|
+
};
|
430
|
+
}
|
431
|
+
// click on first element to collapse tree
|
432
|
+
$("a:eq(0)", control).click( handler(CLASSES.collapsable) );
|
433
|
+
// click on second to expand tree
|
434
|
+
$("a:eq(1)", control).click( handler(CLASSES.expandable) );
|
435
|
+
// click on third to toggle tree
|
436
|
+
$("a:eq(2)", control).click( handler() );
|
437
|
+
}
|
438
|
+
|
439
|
+
// handle toggle event
|
440
|
+
function toggler() {
|
441
|
+
$(this)
|
442
|
+
.parent()
|
443
|
+
// swap classes for hitarea
|
444
|
+
.find(">.hitarea")
|
445
|
+
.swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
|
446
|
+
.swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
|
447
|
+
.end()
|
448
|
+
// swap classes for parent li
|
449
|
+
.swapClass( CLASSES.collapsable, CLASSES.expandable )
|
450
|
+
.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
|
451
|
+
// find child lists
|
452
|
+
.find( ">ul" )
|
453
|
+
// toggle them
|
454
|
+
.heightToggle( settings.animated, settings.toggle );
|
455
|
+
if ( settings.unique ) {
|
456
|
+
$(this).parent()
|
457
|
+
.siblings()
|
458
|
+
// swap classes for hitarea
|
459
|
+
.find(">.hitarea")
|
460
|
+
.replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
|
461
|
+
.replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
|
462
|
+
.end()
|
463
|
+
.replaceClass( CLASSES.collapsable, CLASSES.expandable )
|
464
|
+
.replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
|
465
|
+
.find( ">ul" )
|
466
|
+
.heightHide( settings.animated, settings.toggle );
|
467
|
+
}
|
468
|
+
}
|
469
|
+
|
470
|
+
function serialize() {
|
471
|
+
function binary(arg) {
|
472
|
+
return arg ? 1 : 0;
|
473
|
+
}
|
474
|
+
var data = [];
|
475
|
+
branches.each(function(i, e) {
|
476
|
+
data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
|
477
|
+
});
|
478
|
+
$.cookie(settings.cookieId, data.join("") );
|
479
|
+
}
|
480
|
+
|
481
|
+
function deserialize() {
|
482
|
+
var stored = $.cookie(settings.cookieId);
|
483
|
+
if ( stored ) {
|
484
|
+
var data = stored.split("");
|
485
|
+
branches.each(function(i, e) {
|
486
|
+
$(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
|
487
|
+
});
|
488
|
+
}
|
489
|
+
}
|
490
|
+
|
491
|
+
// add treeview class to activate styles
|
492
|
+
this.addClass("treeview");
|
493
|
+
|
494
|
+
// prepare branches and find all tree items with child lists
|
495
|
+
var branches = this.find("li").prepareBranches(settings);
|
496
|
+
|
497
|
+
switch(settings.persist) {
|
498
|
+
case "cookie":
|
499
|
+
var toggleCallback = settings.toggle;
|
500
|
+
settings.toggle = function() {
|
501
|
+
serialize();
|
502
|
+
if (toggleCallback) {
|
503
|
+
toggleCallback.apply(this, arguments);
|
504
|
+
}
|
505
|
+
};
|
506
|
+
deserialize();
|
507
|
+
break;
|
508
|
+
case "location":
|
509
|
+
var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); });
|
510
|
+
if ( current.length ) {
|
511
|
+
current.addClass("selected").parents("ul, li").add( current.next() ).show();
|
512
|
+
}
|
513
|
+
break;
|
514
|
+
}
|
515
|
+
|
516
|
+
branches.applyClasses(settings, toggler);
|
517
|
+
|
518
|
+
// if control option is set, create the treecontroller and show it
|
519
|
+
if ( settings.control ) {
|
520
|
+
treeController(this, settings.control);
|
521
|
+
$(settings.control).show();
|
522
|
+
}
|
523
|
+
|
524
|
+
return this.bind("add", function(event, branches) {
|
525
|
+
$(branches).prev()
|
526
|
+
.removeClass(CLASSES.last)
|
527
|
+
.removeClass(CLASSES.lastCollapsable)
|
528
|
+
.removeClass(CLASSES.lastExpandable)
|
529
|
+
.find(">.hitarea")
|
530
|
+
.removeClass(CLASSES.lastCollapsableHitarea)
|
531
|
+
.removeClass(CLASSES.lastExpandableHitarea);
|
532
|
+
$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler);
|
533
|
+
});
|
534
|
+
}
|
535
|
+
});
|
536
|
+
|
537
|
+
var CLASSES = $.fn.treeview.classes = {
|
538
|
+
open: "open",
|
539
|
+
closed: "closed",
|
540
|
+
expandable: "expandable",
|
541
|
+
expandableHitarea: "expandable-hitarea",
|
542
|
+
lastExpandableHitarea: "lastExpandable-hitarea",
|
543
|
+
collapsable: "collapsable",
|
544
|
+
collapsableHitarea: "collapsable-hitarea",
|
545
|
+
lastCollapsableHitarea: "lastCollapsable-hitarea",
|
546
|
+
lastCollapsable: "lastCollapsable",
|
547
|
+
lastExpandable: "lastExpandable",
|
548
|
+
last: "last",
|
549
|
+
hitarea: "hitarea"
|
550
|
+
};
|
551
|
+
|
552
|
+
$.fn.Treeview = $.fn.treeview;
|
553
|
+
|
554
|
+
})(jQuery);
|
555
|
+
</script>
|
556
|
+
<script type="text/javascript">
|
557
|
+
$(document).ready(function(){
|
558
|
+
$("#tree").treeview({
|
559
|
+
control: "#treecontrol",
|
560
|
+
animated: "fast",
|
561
|
+
collapsed: true,
|
562
|
+
toggle: function() {
|
563
|
+
window.console && console.log("%o was toggled", this);
|
564
|
+
}
|
565
|
+
});
|
566
|
+
|
567
|
+
$("#content").css("padding-top", $("#header").height());
|
568
|
+
});
|
569
|
+
</script>
|
570
|
+
|
571
|
+
</head>
|
572
|
+
<body>
|
573
|
+
<div id="container">
|
574
|
+
<div id="header">
|
575
|
+
<div class="time">20.93 s</div>
|
576
|
+
<h1>discovery_interface: <strong><span class="total">18 total, </span><span class="error">3 error, </span><span class="ignored">3 ignored, </span><span class="passed">12 passed</span></strong>
|
577
|
+
</h1>
|
578
|
+
<div id="treecontrol">
|
579
|
+
<ul>
|
580
|
+
<li>
|
581
|
+
<a title="Collapse the entire tree below" href="#">Collapse</a>
|
582
|
+
|
|
583
|
+
</li>
|
584
|
+
<li>
|
585
|
+
<a title="Expand the entire tree below" href="#">Expand</a>
|
586
|
+
</li>
|
587
|
+
</ul>
|
588
|
+
</div>
|
589
|
+
</div>
|
590
|
+
<div id="content">
|
591
|
+
<ul id="tree">
|
592
|
+
<li xmlns="" class="level top failed open">
|
593
|
+
<span><em class="time">
|
594
|
+
<div class="time">20.93 s</div>
|
595
|
+
</em>Feature: Discovery Interface</span>
|
596
|
+
<ul>
|
597
|
+
<li class="level suite failed open">
|
598
|
+
<span><em class="time">
|
599
|
+
<div class="time">20.93 s</div>
|
600
|
+
</em>Scenario Outline: Retrieving all OCCI Categories supported by the OCCI Server</span>
|
601
|
+
<ul>
|
602
|
+
<li class="level suite failed open">
|
603
|
+
<span><em class="time">
|
604
|
+
<div class="time">20.93 s</div>
|
605
|
+
</em>Scenarios: </span>
|
606
|
+
<ul>
|
607
|
+
<li class="level suite failed open">
|
608
|
+
<span><em class="time">
|
609
|
+
<div class="time">2.80 s</div>
|
610
|
+
</em>Scenario: Line: 18</span>
|
611
|
+
<ul>
|
612
|
+
<li class="level test">
|
613
|
+
<span><em class="time">
|
614
|
+
<div class="time">11 ms</div>
|
615
|
+
</em><em class="status">passed</em>Given I use endpoint http://141.5.99.69/</span>
|
616
|
+
</li>
|
617
|
+
<li class="level test">
|
618
|
+
<span><em class="time">
|
619
|
+
<div class="time">12 ms</div>
|
620
|
+
</em><em class="status">passed</em>And as protocol http</span>
|
621
|
+
</li>
|
622
|
+
<li class="level test">
|
623
|
+
<span><em class="time">
|
624
|
+
<div class="time">12 ms</div>
|
625
|
+
</em><em class="status">passed</em>And the clients accept type is text/occi</span>
|
626
|
+
</li>
|
627
|
+
<li class="level test">
|
628
|
+
<span><em class="time">
|
629
|
+
<div class="time">921 ms</div>
|
630
|
+
</em><em class="status">passed</em>When OCCI Client request all OCCI Categories supported by the OCCI Server</span>
|
631
|
+
</li>
|
632
|
+
<li class="level test failed open">
|
633
|
+
<span><em class="time">
|
634
|
+
<div class="time">922 ms</div>
|
635
|
+
</em><em class="status">error</em>Then the Client should have the response code 200</span>
|
636
|
+
<ul>
|
637
|
+
<li class="text">
|
638
|
+
<span class="stdout"></span>
|
639
|
+
</li>
|
640
|
+
<li class="text">
|
641
|
+
<span class="stdout"> <br/></span>
|
642
|
+
</li>
|
643
|
+
<li class="text">
|
644
|
+
<span class="stdout"></span>
|
645
|
+
</li>
|
646
|
+
<li class="text">
|
647
|
+
<span class="stdout">You can implement step definitions for undefined steps with these snippets:<br/></span>
|
648
|
+
</li>
|
649
|
+
<li class="text">
|
650
|
+
<span class="stdout"></span>
|
651
|
+
</li>
|
652
|
+
<li class="text">
|
653
|
+
<span class="stdout">Then /^the Client should have the response code (\d+)$/ do |arg1|<br/></span>
|
654
|
+
</li>
|
655
|
+
<li class="text">
|
656
|
+
<span class="stdout"></span>
|
657
|
+
</li>
|
658
|
+
<li class="text">
|
659
|
+
<span class="stdout"> pending # express the regexp above with the code you wish you had<br/></span>
|
660
|
+
</li>
|
661
|
+
<li class="text">
|
662
|
+
<span class="stdout"></span>
|
663
|
+
</li>
|
664
|
+
<li class="text">
|
665
|
+
<span class="stdout">end<br/></span>
|
666
|
+
</li>
|
667
|
+
<li class="text">
|
668
|
+
<span class="stdout"></span>
|
669
|
+
</li>
|
670
|
+
<li class="text">
|
671
|
+
<span class="stderr">opening connection to 141.5.99.69...<br/></span>
|
672
|
+
</li>
|
673
|
+
</ul>
|
674
|
+
</li>
|
675
|
+
<li class="level test ignored open">
|
676
|
+
<span><em class="time">
|
677
|
+
<div class="time">923 ms</div>
|
678
|
+
</em><em class="status">ignored</em>And OCCI Client should display the OCCI Categories received from the OCCI Server</span>
|
679
|
+
<ul>
|
680
|
+
<li class="text">
|
681
|
+
<span class="stdout">Skipped step<br/></span>
|
682
|
+
</li>
|
683
|
+
</ul>
|
684
|
+
</li>
|
685
|
+
</ul>
|
686
|
+
</li>
|
687
|
+
<li class="level suite failed open">
|
688
|
+
<span><em class="time">
|
689
|
+
<div class="time">7.60 s</div>
|
690
|
+
</em>Scenario: Line: 19</span>
|
691
|
+
<ul>
|
692
|
+
<li class="level test">
|
693
|
+
<span><em class="time">
|
694
|
+
<div class="time">924 ms</div>
|
695
|
+
</em><em class="status">passed</em>Given I use endpoint http://141.5.99.69</span>
|
696
|
+
</li>
|
697
|
+
<li class="level test">
|
698
|
+
<span><em class="time">
|
699
|
+
<div class="time">924 ms</div>
|
700
|
+
</em><em class="status">passed</em>And as protocol http</span>
|
701
|
+
</li>
|
702
|
+
<li class="level test">
|
703
|
+
<span><em class="time">
|
704
|
+
<div class="time">925 ms</div>
|
705
|
+
</em><em class="status">passed</em>And the clients accept type is text/plain</span>
|
706
|
+
</li>
|
707
|
+
<li class="level test">
|
708
|
+
<span><em class="time">
|
709
|
+
<div class="time">1.61 s</div>
|
710
|
+
</em><em class="status">passed</em>When OCCI Client request all OCCI Categories supported by the OCCI Server</span>
|
711
|
+
</li>
|
712
|
+
<li class="level test failed open">
|
713
|
+
<span><em class="time">
|
714
|
+
<div class="time">1.61 s</div>
|
715
|
+
</em><em class="status">error</em>Then the Client should have the response code 200</span>
|
716
|
+
<ul>
|
717
|
+
<li class="text">
|
718
|
+
<span class="stdout"></span>
|
719
|
+
</li>
|
720
|
+
<li class="text">
|
721
|
+
<span class="stdout"> <br/></span>
|
722
|
+
</li>
|
723
|
+
<li class="text">
|
724
|
+
<span class="stdout"></span>
|
725
|
+
</li>
|
726
|
+
<li class="text">
|
727
|
+
<span class="stdout">You can implement step definitions for undefined steps with these snippets:<br/></span>
|
728
|
+
</li>
|
729
|
+
<li class="text">
|
730
|
+
<span class="stdout"></span>
|
731
|
+
</li>
|
732
|
+
<li class="text">
|
733
|
+
<span class="stdout">Then /^the Client should have the response code (\d+)$/ do |arg1|<br/></span>
|
734
|
+
</li>
|
735
|
+
<li class="text">
|
736
|
+
<span class="stdout"></span>
|
737
|
+
</li>
|
738
|
+
<li class="text">
|
739
|
+
<span class="stdout"> pending # express the regexp above with the code you wish you had<br/></span>
|
740
|
+
</li>
|
741
|
+
<li class="text">
|
742
|
+
<span class="stdout"></span>
|
743
|
+
</li>
|
744
|
+
<li class="text">
|
745
|
+
<span class="stdout">end<br/></span>
|
746
|
+
</li>
|
747
|
+
<li class="text">
|
748
|
+
<span class="stdout"></span>
|
749
|
+
</li>
|
750
|
+
</ul>
|
751
|
+
</li>
|
752
|
+
<li class="level test ignored open">
|
753
|
+
<span><em class="time">
|
754
|
+
<div class="time">1.61 s</div>
|
755
|
+
</em><em class="status">ignored</em>And OCCI Client should display the OCCI Categories received from the OCCI Server</span>
|
756
|
+
<ul>
|
757
|
+
<li class="text">
|
758
|
+
<span class="stdout">Skipped step<br/></span>
|
759
|
+
</li>
|
760
|
+
</ul>
|
761
|
+
</li>
|
762
|
+
</ul>
|
763
|
+
</li>
|
764
|
+
<li class="level suite failed open">
|
765
|
+
<span><em class="time">
|
766
|
+
<div class="time">10.53 s</div>
|
767
|
+
</em>Scenario: Line: 20</span>
|
768
|
+
<ul>
|
769
|
+
<li class="level test">
|
770
|
+
<span><em class="time">
|
771
|
+
<div class="time">1.61 s</div>
|
772
|
+
</em><em class="status">passed</em>Given I use endpoint http://46.231.128.85:8086/</span>
|
773
|
+
<ul>
|
774
|
+
<li class="text">
|
775
|
+
<span class="stdout"></span>
|
776
|
+
</li>
|
777
|
+
<li class="text">
|
778
|
+
<span class="stderr">opening connection to 46.231.128.85...<br/></span>
|
779
|
+
</li>
|
780
|
+
</ul>
|
781
|
+
</li>
|
782
|
+
<li class="level test">
|
783
|
+
<span><em class="time">
|
784
|
+
<div class="time">1.61 s</div>
|
785
|
+
</em><em class="status">passed</em>And as protocol http</span>
|
786
|
+
</li>
|
787
|
+
<li class="level test">
|
788
|
+
<span><em class="time">
|
789
|
+
<div class="time">1.61 s</div>
|
790
|
+
</em><em class="status">passed</em>And the clients accept type is text/occi</span>
|
791
|
+
</li>
|
792
|
+
<li class="level test">
|
793
|
+
<span><em class="time">
|
794
|
+
<div class="time">1.90 s</div>
|
795
|
+
</em><em class="status">passed</em>When OCCI Client request all OCCI Categories supported by the OCCI Server</span>
|
796
|
+
</li>
|
797
|
+
<li class="level test failed open">
|
798
|
+
<span><em class="time">
|
799
|
+
<div class="time">1.90 s</div>
|
800
|
+
</em><em class="status">error</em>Then the Client should have the response code 200</span>
|
801
|
+
<ul>
|
802
|
+
<li class="text">
|
803
|
+
<span class="stdout"></span>
|
804
|
+
</li>
|
805
|
+
<li class="text">
|
806
|
+
<span class="stdout"> <br/></span>
|
807
|
+
</li>
|
808
|
+
<li class="text">
|
809
|
+
<span class="stdout"></span>
|
810
|
+
</li>
|
811
|
+
<li class="text">
|
812
|
+
<span class="stdout">You can implement step definitions for undefined steps with these snippets:<br/></span>
|
813
|
+
</li>
|
814
|
+
<li class="text">
|
815
|
+
<span class="stdout"></span>
|
816
|
+
</li>
|
817
|
+
<li class="text">
|
818
|
+
<span class="stdout">Then /^the Client should have the response code (\d+)$/ do |arg1|<br/></span>
|
819
|
+
</li>
|
820
|
+
<li class="text">
|
821
|
+
<span class="stdout"></span>
|
822
|
+
</li>
|
823
|
+
<li class="text">
|
824
|
+
<span class="stdout"> pending # express the regexp above with the code you wish you had<br/></span>
|
825
|
+
</li>
|
826
|
+
<li class="text">
|
827
|
+
<span class="stdout"></span>
|
828
|
+
</li>
|
829
|
+
<li class="text">
|
830
|
+
<span class="stdout">end<br/></span>
|
831
|
+
</li>
|
832
|
+
<li class="text">
|
833
|
+
<span class="stdout"></span>
|
834
|
+
</li>
|
835
|
+
</ul>
|
836
|
+
</li>
|
837
|
+
<li class="level test ignored open">
|
838
|
+
<span><em class="time">
|
839
|
+
<div class="time">1.90 s</div>
|
840
|
+
</em><em class="status">ignored</em>And OCCI Client should display the OCCI Categories received from the OCCI Server</span>
|
841
|
+
<ul>
|
842
|
+
<li class="text">
|
843
|
+
<span class="stdout">Skipped step<br/></span>
|
844
|
+
</li>
|
845
|
+
</ul>
|
846
|
+
</li>
|
847
|
+
</ul>
|
848
|
+
</li>
|
849
|
+
</ul>
|
850
|
+
</li>
|
851
|
+
</ul>
|
852
|
+
</li>
|
853
|
+
</ul>
|
854
|
+
</li>
|
855
|
+
</ul>
|
856
|
+
</div>
|
857
|
+
</div>
|
858
|
+
<div id="footer">
|
859
|
+
<p>Generated by JetBrains RubyMine on 11.12.12 23:23</p>
|
860
|
+
</div>
|
861
|
+
</body>
|
862
|
+
</html>
|