selenium-webdriver 4.0.0.alpha2 → 4.0.0.alpha7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGES +172 -4
- data/LICENSE +1 -1
- data/lib/selenium/server.rb +25 -9
- data/lib/selenium/webdriver.rb +12 -8
- data/lib/selenium/webdriver/atoms/findElements.js +121 -0
- data/lib/selenium/webdriver/atoms/getAttribute.js +104 -7
- data/lib/selenium/webdriver/atoms/isDisplayed.js +76 -78
- data/lib/selenium/webdriver/atoms/mutationListener.js +38 -0
- data/lib/selenium/webdriver/chrome.rb +10 -9
- data/lib/selenium/webdriver/chrome/bridge.rb +20 -4
- data/lib/selenium/webdriver/chrome/driver.rb +7 -49
- data/lib/selenium/webdriver/chrome/options.rb +97 -57
- data/lib/selenium/webdriver/chrome/profile.rb +3 -3
- data/lib/selenium/webdriver/chrome/service.rb +0 -4
- data/lib/selenium/webdriver/common.rb +6 -1
- data/lib/selenium/webdriver/common/driver.rb +81 -17
- data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +89 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +39 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +143 -0
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +2 -1
- data/lib/selenium/webdriver/common/element.rb +5 -0
- data/lib/selenium/webdriver/common/logger.rb +48 -16
- data/lib/selenium/webdriver/common/manager.rb +5 -0
- data/lib/selenium/webdriver/common/options.rb +116 -0
- data/lib/selenium/webdriver/common/platform.rb +4 -1
- data/lib/selenium/webdriver/common/port_prober.rb +4 -6
- data/lib/selenium/webdriver/common/profile_helper.rb +10 -2
- data/lib/selenium/webdriver/common/proxy.rb +0 -0
- data/lib/selenium/webdriver/common/search_context.rb +3 -2
- data/lib/selenium/webdriver/common/service.rb +30 -113
- data/lib/selenium/webdriver/common/service_manager.rb +151 -0
- data/lib/selenium/webdriver/common/socket_lock.rb +2 -2
- data/lib/selenium/webdriver/common/takes_screenshot.rb +63 -0
- data/lib/selenium/webdriver/common/wait.rb +1 -1
- data/lib/selenium/webdriver/devtools.rb +132 -0
- data/lib/selenium/webdriver/devtools/console_event.rb +38 -0
- data/lib/selenium/webdriver/devtools/exception_event.rb +36 -0
- data/lib/selenium/webdriver/devtools/mutation_event.rb +37 -0
- data/lib/selenium/webdriver/devtools/v84/accessibility.rb +64 -0
- data/lib/selenium/webdriver/devtools/v84/animation.rb +100 -0
- data/lib/selenium/webdriver/devtools/v84/application_cache.rb +66 -0
- data/lib/selenium/webdriver/devtools/v84/audits.rb +63 -0
- data/lib/selenium/webdriver/devtools/v84/background_service.rb +69 -0
- data/lib/selenium/webdriver/devtools/v84/browser.rb +125 -0
- data/lib/selenium/webdriver/devtools/v84/cache_storage.rb +75 -0
- data/lib/selenium/webdriver/devtools/v84/cast.rb +72 -0
- data/lib/selenium/webdriver/devtools/v84/console.rb +59 -0
- data/lib/selenium/webdriver/devtools/v84/css.rb +167 -0
- data/lib/selenium/webdriver/devtools/v84/database.rb +66 -0
- data/lib/selenium/webdriver/devtools/v84/debugger.rb +231 -0
- data/lib/selenium/webdriver/devtools/v84/device_orientation.rb +55 -0
- data/lib/selenium/webdriver/devtools/v84/dom.rb +322 -0
- data/lib/selenium/webdriver/devtools/v84/dom_debugger.rb +95 -0
- data/lib/selenium/webdriver/devtools/v84/dom_snapshot.rb +67 -0
- data/lib/selenium/webdriver/devtools/v84/dom_storage.rb +81 -0
- data/lib/selenium/webdriver/devtools/v84/emulation.rb +182 -0
- data/lib/selenium/webdriver/devtools/v84/fetch.rb +99 -0
- data/lib/selenium/webdriver/devtools/v84/headless_experimental.rb +63 -0
- data/lib/selenium/webdriver/devtools/v84/heap_profiler.rb +109 -0
- data/lib/selenium/webdriver/devtools/v84/indexed_db.rb +102 -0
- data/lib/selenium/webdriver/devtools/v84/input.rb +142 -0
- data/lib/selenium/webdriver/devtools/v84/inspector.rb +57 -0
- data/lib/selenium/webdriver/devtools/v84/io.rb +61 -0
- data/lib/selenium/webdriver/devtools/v84/layer_tree.rb +97 -0
- data/lib/selenium/webdriver/devtools/v84/log.rb +68 -0
- data/lib/selenium/webdriver/devtools/v84/media.rb +59 -0
- data/lib/selenium/webdriver/devtools/v84/memory.rb +88 -0
- data/lib/selenium/webdriver/devtools/v84/network.rb +230 -0
- data/lib/selenium/webdriver/devtools/v84/overlay.rb +159 -0
- data/lib/selenium/webdriver/devtools/v84/page.rb +376 -0
- data/lib/selenium/webdriver/devtools/v84/performance.rb +65 -0
- data/lib/selenium/webdriver/devtools/v84/profiler.rb +113 -0
- data/lib/selenium/webdriver/devtools/v84/runtime.rb +195 -0
- data/lib/selenium/webdriver/devtools/v84/schema.rb +48 -0
- data/lib/selenium/webdriver/devtools/v84/security.rb +73 -0
- data/lib/selenium/webdriver/devtools/v84/service_worker.rb +118 -0
- data/lib/selenium/webdriver/devtools/v84/storage.rb +97 -0
- data/lib/selenium/webdriver/devtools/v84/system_info.rb +52 -0
- data/lib/selenium/webdriver/devtools/v84/target.rb +143 -0
- data/lib/selenium/webdriver/devtools/v84/tethering.rb +57 -0
- data/lib/selenium/webdriver/devtools/v84/tracing.rb +78 -0
- data/lib/selenium/webdriver/devtools/v84/web_audio.rb +72 -0
- data/lib/selenium/webdriver/devtools/v84/web_authn.rb +96 -0
- data/lib/selenium/webdriver/devtools/v85/accessibility.rb +64 -0
- data/lib/selenium/webdriver/devtools/v85/animation.rb +100 -0
- data/lib/selenium/webdriver/devtools/v85/application_cache.rb +66 -0
- data/lib/selenium/webdriver/devtools/v85/audits.rb +63 -0
- data/lib/selenium/webdriver/devtools/v85/background_service.rb +69 -0
- data/lib/selenium/webdriver/devtools/v85/browser.rb +125 -0
- data/lib/selenium/webdriver/devtools/v85/cache_storage.rb +75 -0
- data/lib/selenium/webdriver/devtools/v85/cast.rb +72 -0
- data/lib/selenium/webdriver/devtools/v85/console.rb +59 -0
- data/lib/selenium/webdriver/devtools/v85/css.rb +167 -0
- data/lib/selenium/webdriver/devtools/v85/database.rb +66 -0
- data/lib/selenium/webdriver/devtools/v85/debugger.rb +231 -0
- data/lib/selenium/webdriver/devtools/v85/device_orientation.rb +55 -0
- data/lib/selenium/webdriver/devtools/v85/dom.rb +322 -0
- data/lib/selenium/webdriver/devtools/v85/dom_debugger.rb +95 -0
- data/lib/selenium/webdriver/devtools/v85/dom_snapshot.rb +67 -0
- data/lib/selenium/webdriver/devtools/v85/dom_storage.rb +81 -0
- data/lib/selenium/webdriver/devtools/v85/emulation.rb +182 -0
- data/lib/selenium/webdriver/devtools/v85/fetch.rb +99 -0
- data/lib/selenium/webdriver/devtools/v85/headless_experimental.rb +63 -0
- data/lib/selenium/webdriver/devtools/v85/heap_profiler.rb +109 -0
- data/lib/selenium/webdriver/devtools/v85/indexed_db.rb +102 -0
- data/lib/selenium/webdriver/devtools/v85/input.rb +143 -0
- data/lib/selenium/webdriver/devtools/v85/inspector.rb +57 -0
- data/lib/selenium/webdriver/devtools/v85/io.rb +61 -0
- data/lib/selenium/webdriver/devtools/v85/layer_tree.rb +97 -0
- data/lib/selenium/webdriver/devtools/v85/log.rb +68 -0
- data/lib/selenium/webdriver/devtools/v85/media.rb +59 -0
- data/lib/selenium/webdriver/devtools/v85/memory.rb +88 -0
- data/lib/selenium/webdriver/devtools/v85/network.rb +230 -0
- data/lib/selenium/webdriver/devtools/v85/overlay.rb +160 -0
- data/lib/selenium/webdriver/devtools/v85/page.rb +376 -0
- data/lib/selenium/webdriver/devtools/v85/performance.rb +65 -0
- data/lib/selenium/webdriver/devtools/v85/profiler.rb +113 -0
- data/lib/selenium/webdriver/devtools/v85/runtime.rb +196 -0
- data/lib/selenium/webdriver/devtools/v85/schema.rb +48 -0
- data/lib/selenium/webdriver/devtools/v85/security.rb +73 -0
- data/lib/selenium/webdriver/devtools/v85/service_worker.rb +118 -0
- data/lib/selenium/webdriver/devtools/v85/storage.rb +97 -0
- data/lib/selenium/webdriver/devtools/v85/system_info.rb +52 -0
- data/lib/selenium/webdriver/devtools/v85/target.rb +145 -0
- data/lib/selenium/webdriver/devtools/v85/tethering.rb +57 -0
- data/lib/selenium/webdriver/devtools/v85/tracing.rb +78 -0
- data/lib/selenium/webdriver/devtools/v85/web_audio.rb +72 -0
- data/lib/selenium/webdriver/devtools/v85/web_authn.rb +96 -0
- data/lib/selenium/webdriver/devtools/v86/accessibility.rb +64 -0
- data/lib/selenium/webdriver/devtools/v86/animation.rb +100 -0
- data/lib/selenium/webdriver/devtools/v86/application_cache.rb +66 -0
- data/lib/selenium/webdriver/devtools/v86/audits.rb +63 -0
- data/lib/selenium/webdriver/devtools/v86/background_service.rb +69 -0
- data/lib/selenium/webdriver/devtools/v86/browser.rb +125 -0
- data/lib/selenium/webdriver/devtools/v86/cache_storage.rb +75 -0
- data/lib/selenium/webdriver/devtools/v86/cast.rb +72 -0
- data/lib/selenium/webdriver/devtools/v86/console.rb +59 -0
- data/lib/selenium/webdriver/devtools/v86/css.rb +181 -0
- data/lib/selenium/webdriver/devtools/v86/database.rb +66 -0
- data/lib/selenium/webdriver/devtools/v86/debugger.rb +233 -0
- data/lib/selenium/webdriver/devtools/v86/device_orientation.rb +55 -0
- data/lib/selenium/webdriver/devtools/v86/dom.rb +329 -0
- data/lib/selenium/webdriver/devtools/v86/dom_debugger.rb +95 -0
- data/lib/selenium/webdriver/devtools/v86/dom_snapshot.rb +67 -0
- data/lib/selenium/webdriver/devtools/v86/dom_storage.rb +81 -0
- data/lib/selenium/webdriver/devtools/v86/emulation.rb +193 -0
- data/lib/selenium/webdriver/devtools/v86/fetch.rb +99 -0
- data/lib/selenium/webdriver/devtools/v86/headless_experimental.rb +63 -0
- data/lib/selenium/webdriver/devtools/v86/heap_profiler.rb +109 -0
- data/lib/selenium/webdriver/devtools/v86/indexed_db.rb +102 -0
- data/lib/selenium/webdriver/devtools/v86/input.rb +143 -0
- data/lib/selenium/webdriver/devtools/v86/inspector.rb +57 -0
- data/lib/selenium/webdriver/devtools/v86/io.rb +61 -0
- data/lib/selenium/webdriver/devtools/v86/layer_tree.rb +97 -0
- data/lib/selenium/webdriver/devtools/v86/log.rb +68 -0
- data/lib/selenium/webdriver/devtools/v86/media.rb +59 -0
- data/lib/selenium/webdriver/devtools/v86/memory.rb +88 -0
- data/lib/selenium/webdriver/devtools/v86/network.rb +235 -0
- data/lib/selenium/webdriver/devtools/v86/overlay.rb +183 -0
- data/lib/selenium/webdriver/devtools/v86/page.rb +376 -0
- data/lib/selenium/webdriver/devtools/v86/performance.rb +65 -0
- data/lib/selenium/webdriver/devtools/v86/profiler.rb +113 -0
- data/lib/selenium/webdriver/devtools/v86/runtime.rb +196 -0
- data/lib/selenium/webdriver/devtools/v86/schema.rb +48 -0
- data/lib/selenium/webdriver/devtools/v86/security.rb +73 -0
- data/lib/selenium/webdriver/devtools/v86/service_worker.rb +118 -0
- data/lib/selenium/webdriver/devtools/v86/storage.rb +97 -0
- data/lib/selenium/webdriver/devtools/v86/system_info.rb +52 -0
- data/lib/selenium/webdriver/devtools/v86/target.rb +145 -0
- data/lib/selenium/webdriver/devtools/v86/tethering.rb +57 -0
- data/lib/selenium/webdriver/devtools/v86/tracing.rb +78 -0
- data/lib/selenium/webdriver/devtools/v86/web_audio.rb +72 -0
- data/lib/selenium/webdriver/devtools/v86/web_authn.rb +102 -0
- data/lib/selenium/webdriver/devtools/v87/accessibility.rb +73 -0
- data/lib/selenium/webdriver/devtools/v87/animation.rb +100 -0
- data/lib/selenium/webdriver/devtools/v87/application_cache.rb +66 -0
- data/lib/selenium/webdriver/devtools/v87/audits.rb +63 -0
- data/lib/selenium/webdriver/devtools/v87/background_service.rb +69 -0
- data/lib/selenium/webdriver/devtools/v87/browser.rb +125 -0
- data/lib/selenium/webdriver/devtools/v87/cache_storage.rb +75 -0
- data/lib/selenium/webdriver/devtools/v87/cast.rb +72 -0
- data/lib/selenium/webdriver/devtools/v87/console.rb +59 -0
- data/lib/selenium/webdriver/devtools/v87/css.rb +181 -0
- data/lib/selenium/webdriver/devtools/v87/database.rb +66 -0
- data/lib/selenium/webdriver/devtools/v87/debugger.rb +233 -0
- data/lib/selenium/webdriver/devtools/v87/device_orientation.rb +55 -0
- data/lib/selenium/webdriver/devtools/v87/dom.rb +329 -0
- data/lib/selenium/webdriver/devtools/v87/dom_debugger.rb +95 -0
- data/lib/selenium/webdriver/devtools/v87/dom_snapshot.rb +67 -0
- data/lib/selenium/webdriver/devtools/v87/dom_storage.rb +81 -0
- data/lib/selenium/webdriver/devtools/v87/emulation.rb +193 -0
- data/lib/selenium/webdriver/devtools/v87/fetch.rb +99 -0
- data/lib/selenium/webdriver/devtools/v87/headless_experimental.rb +63 -0
- data/lib/selenium/webdriver/devtools/v87/heap_profiler.rb +109 -0
- data/lib/selenium/webdriver/devtools/v87/indexed_db.rb +102 -0
- data/lib/selenium/webdriver/devtools/v87/input.rb +143 -0
- data/lib/selenium/webdriver/devtools/v87/inspector.rb +57 -0
- data/lib/selenium/webdriver/devtools/v87/io.rb +61 -0
- data/lib/selenium/webdriver/devtools/v87/layer_tree.rb +97 -0
- data/lib/selenium/webdriver/devtools/v87/log.rb +68 -0
- data/lib/selenium/webdriver/devtools/v87/media.rb +59 -0
- data/lib/selenium/webdriver/devtools/v87/memory.rb +88 -0
- data/lib/selenium/webdriver/devtools/v87/network.rb +247 -0
- data/lib/selenium/webdriver/devtools/v87/overlay.rb +183 -0
- data/lib/selenium/webdriver/devtools/v87/page.rb +376 -0
- data/lib/selenium/webdriver/devtools/v87/performance.rb +65 -0
- data/lib/selenium/webdriver/devtools/v87/profiler.rb +125 -0
- data/lib/selenium/webdriver/devtools/v87/runtime.rb +196 -0
- data/lib/selenium/webdriver/devtools/v87/schema.rb +48 -0
- data/lib/selenium/webdriver/devtools/v87/security.rb +73 -0
- data/lib/selenium/webdriver/devtools/v87/service_worker.rb +118 -0
- data/lib/selenium/webdriver/devtools/v87/storage.rb +97 -0
- data/lib/selenium/webdriver/devtools/v87/system_info.rb +52 -0
- data/lib/selenium/webdriver/devtools/v87/target.rb +145 -0
- data/lib/selenium/webdriver/devtools/v87/tethering.rb +57 -0
- data/lib/selenium/webdriver/devtools/v87/tracing.rb +78 -0
- data/lib/selenium/webdriver/devtools/v87/web_audio.rb +72 -0
- data/lib/selenium/webdriver/devtools/v87/web_authn.rb +102 -0
- data/lib/selenium/webdriver/edge.rb +29 -9
- data/lib/selenium/webdriver/edge_chrome/bridge.rb +37 -0
- data/lib/selenium/webdriver/edge_chrome/driver.rb +48 -0
- data/lib/selenium/webdriver/edge_chrome/options.rb +37 -0
- data/lib/selenium/webdriver/edge_chrome/profile.rb +33 -0
- data/lib/selenium/webdriver/edge_chrome/service.rb +36 -0
- data/lib/selenium/webdriver/{edge → edge_html}/driver.rb +3 -35
- data/lib/selenium/webdriver/{edge → edge_html}/options.rb +26 -22
- data/lib/selenium/webdriver/{edge → edge_html}/service.rb +2 -6
- data/lib/selenium/webdriver/firefox.rb +18 -15
- data/lib/selenium/webdriver/firefox/bridge.rb +1 -1
- data/lib/selenium/webdriver/firefox/driver.rb +2 -31
- data/lib/selenium/webdriver/firefox/extension.rb +8 -0
- data/lib/selenium/webdriver/firefox/options.rb +47 -52
- data/lib/selenium/webdriver/firefox/profile.rb +7 -78
- data/lib/selenium/webdriver/firefox/service.rb +0 -4
- data/lib/selenium/webdriver/ie.rb +8 -7
- data/lib/selenium/webdriver/ie/driver.rb +0 -33
- data/lib/selenium/webdriver/ie/options.rb +10 -33
- data/lib/selenium/webdriver/ie/service.rb +5 -9
- data/lib/selenium/webdriver/remote.rb +16 -10
- data/lib/selenium/webdriver/remote/bridge.rb +38 -42
- data/lib/selenium/webdriver/remote/capabilities.rb +25 -7
- data/lib/selenium/webdriver/remote/driver.rb +6 -13
- data/lib/selenium/webdriver/remote/http/default.rb +10 -6
- data/lib/selenium/webdriver/remote/http/persistent.rb +5 -6
- data/lib/selenium/webdriver/safari.rb +16 -8
- data/lib/selenium/webdriver/safari/bridge.rb +4 -4
- data/lib/selenium/webdriver/safari/driver.rb +3 -30
- data/lib/selenium/webdriver/safari/options.rb +18 -19
- data/lib/selenium/webdriver/safari/service.rb +0 -4
- data/lib/selenium/webdriver/support.rb +1 -0
- data/lib/selenium/webdriver/support/color.rb +2 -2
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +1 -1
- data/lib/selenium/webdriver/support/relative_locator.rb +51 -0
- data/lib/selenium/webdriver/version.rb +1 -1
- data/selenium-webdriver.gemspec +7 -6
- metadata +225 -21
- data/lib/selenium/webdriver/firefox/binary.rb +0 -110
- data/lib/selenium/webdriver/firefox/extension/prefs.json +0 -69
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 98a5536f91ba3fce5d5a6065dfca9c19d97e911b80f2eb3b26ee5a95057a5d9d
|
|
4
|
+
data.tar.gz: 80f3216b300aa16f984183dffe014fbe4d5f2647f63a1f6deb84b9aa41209fac
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8ea3a82cdb6fe8d089858101df6f614141ac90da8f3a2eb6e85a812beca801103acb24480293132ddc44330e897b22f666c588b7830aca1e23e1384d7970144a
|
|
7
|
+
data.tar.gz: 68d902ca4d337a844ff39479fe234fad9f08e6fcd21fee6a6e5c88abdabba98de41a12399f7d5df95fc8f49ecb8061b30ffe3d82e284dcd01607c36deeb0a776
|
data/CHANGES
CHANGED
|
@@ -1,3 +1,121 @@
|
|
|
1
|
+
4.0.0.alpha7 (2020-11-10)
|
|
2
|
+
=========================
|
|
3
|
+
|
|
4
|
+
Chrome:
|
|
5
|
+
* Fixed a link to download ChromeDriver when it's not found (thanks @masakazutakewaka).
|
|
6
|
+
* Fixed an issue when passing instance of Profile to an Options in capabilities
|
|
7
|
+
(thanks @masakazutakewaka).
|
|
8
|
+
|
|
9
|
+
DevTools:
|
|
10
|
+
* Added support for multiple version of CDP. Currently supported versions are
|
|
11
|
+
84-87. The proper version is automatically selected when the browser is started
|
|
12
|
+
based on its version. The implementation is Chromium-based and is confirmed
|
|
13
|
+
to work in Chrome and Edge at least.
|
|
14
|
+
* Added support for basic authentication (see HasAuthentication).
|
|
15
|
+
* Added support for listening to JavaScript console messages (see HasLogEvents).
|
|
16
|
+
* Added support for listening to JavaScript exceptions (see HasLogEvents).
|
|
17
|
+
* Added support for listening to DOM mutations (see HasLogEvents).
|
|
18
|
+
|
|
19
|
+
Edge:
|
|
20
|
+
* Switched default Edge implementation to Chromium-based. To use older versions
|
|
21
|
+
of Edge, pass :edge_html when initializing the driver.
|
|
22
|
+
|
|
23
|
+
Firefox:
|
|
24
|
+
* Fixed an issue whereby using the new capabilities structure in local drivers
|
|
25
|
+
would cause the W3C check to complain that `browser_name` was an invalid
|
|
26
|
+
capability key name (thanks @luke-hill)
|
|
27
|
+
|
|
28
|
+
Ruby:
|
|
29
|
+
* Added support for taking screenshots of individual elements using Element#screenshot
|
|
30
|
+
(thanks @johndouthat).
|
|
31
|
+
* Fixed deprecation message of using Net::HTTP::Proxy (thanks @masakazutakewaka).
|
|
32
|
+
* Fixed false negative detection of Linux on WSL2 (thanks @snsten).
|
|
33
|
+
* Support ChildProcess 4.x versions (thanks @boutil).
|
|
34
|
+
|
|
35
|
+
Safari:
|
|
36
|
+
* Fixed browser name in capabilities for Safari Technology Preview.
|
|
37
|
+
|
|
38
|
+
4.0.0.alpha6 (2020-05-28)
|
|
39
|
+
=========================
|
|
40
|
+
|
|
41
|
+
Chrome:
|
|
42
|
+
* Added DevTools classes and methods generated from the CDP specification.
|
|
43
|
+
It currently supports commands and events and provides Rubyish API:
|
|
44
|
+
driver.devtools.page.navigate(url: 'http://google.com')
|
|
45
|
+
driver.devtools.console.clear_messages
|
|
46
|
+
driver.devtools.page.enable
|
|
47
|
+
driver.devtools.page.on(:load_event_fired) do |params|
|
|
48
|
+
puts("Page loaded in #{params['timestamp']}")
|
|
49
|
+
end
|
|
50
|
+
Check https://chromedevtools.github.io/devtools-protocol/ for more information
|
|
51
|
+
about possible commands and events. Please note that this API is considered
|
|
52
|
+
to be experimental and may change any time before stable 4.0 release.
|
|
53
|
+
* Fixed an issue when passing :prompt_for_download (or similar snake_cased
|
|
54
|
+
symbols) in Options#prefs would be ignored by Chrome because Selenium
|
|
55
|
+
would internally convert it to camelCased format (:promptForDownload).
|
|
56
|
+
Now :prefs are left intact.
|
|
57
|
+
|
|
58
|
+
Edge:
|
|
59
|
+
* Fixed an issue when Driver#execute_cdp would not work for Chromium-based
|
|
60
|
+
Edge browser.
|
|
61
|
+
|
|
62
|
+
Ruby:
|
|
63
|
+
* Deprecated passing :desired_capabilities and :options to driver initialization
|
|
64
|
+
in favor of :capabilities. They now can be combined in an array to make
|
|
65
|
+
custom capabilities requirements:
|
|
66
|
+
caps = Selenium::WebDriver::Remote::Capabilities.chrome
|
|
67
|
+
opts = Selenium::WebDriver::Chrome::Options.new
|
|
68
|
+
Selenium::WebDriver.for(:remote, capabilities: :chrome)
|
|
69
|
+
Selenium::WebDriver.for(:remote, capabilities: caps)
|
|
70
|
+
Selenium::WebDriver.for(:remote, capabilities: opts)
|
|
71
|
+
Selenium::WebDriver.for(:remote, capabilities: [caps, opts])
|
|
72
|
+
* Deprecated passing Hash to :capabilities in favor of Remote::Capabilities object.
|
|
73
|
+
* Updated minimum require Ruby version to 2.5.
|
|
74
|
+
* Improved keyword arguments handling to avoid warnings in Ruby 2.7.
|
|
75
|
+
|
|
76
|
+
4.0.0.alpha5 (2020-03-18)
|
|
77
|
+
=========================
|
|
78
|
+
|
|
79
|
+
The release is just to synchronize version with other bindings and does not
|
|
80
|
+
include any changes.
|
|
81
|
+
|
|
82
|
+
4.0.0.alpha4 (2020-01-09)
|
|
83
|
+
=========================
|
|
84
|
+
|
|
85
|
+
Ruby:
|
|
86
|
+
* Added initial support for relative locators, which allow to find elements
|
|
87
|
+
above/below/left/right/near another element. For example, you can find all
|
|
88
|
+
the cells in a table to the right of your starting cell:
|
|
89
|
+
start_cell = driver.find_element(css: 'td')
|
|
90
|
+
right_cells = driver.find_elements(relative: {tag_name: 'td', right: start_cell})
|
|
91
|
+
The documentation is still lacking so refer to examples in df6be2e962.
|
|
92
|
+
* Added ability to silence certain logger messages by using it's identifiers:
|
|
93
|
+
Selenium::WebDriver.logger.ignore(:driver_path)
|
|
94
|
+
* Added new dependency: websocket. It's used for communicating with Chrome DevTools.
|
|
95
|
+
* Loosened childprocess dependency to allow using version 2.0+.
|
|
96
|
+
* Loosened rubyzip dependency to allow using version 2.0+.
|
|
97
|
+
* Fixed Errno::EACCES error on Linux DeX and similar distributes
|
|
98
|
+
|
|
99
|
+
Chrome:
|
|
100
|
+
* Added initial support for communicating with Chrome DevTools. The implementation
|
|
101
|
+
is very basic and lacks CDP domains, events and types - those will be added
|
|
102
|
+
in future releases. Still, it allows to execute simple commands to DevTools:
|
|
103
|
+
driver.devtools.send('Page.navigate', {url: 'https://google.com'})
|
|
104
|
+
|
|
105
|
+
4.0.0.alpha3 (2019-07-08)
|
|
106
|
+
=========================
|
|
107
|
+
|
|
108
|
+
Ruby:
|
|
109
|
+
* All documented driver capabilities supported in respective browser Options class by constructor and accessor
|
|
110
|
+
* Driver constructor :options and :desired_capabilities generate the same capabilities for local and remote execution
|
|
111
|
+
* Deprecated :options as keyword for initializing browser Options classes
|
|
112
|
+
|
|
113
|
+
Chrome:
|
|
114
|
+
* Add support for browser logging with latest versions of chromedriver
|
|
115
|
+
|
|
116
|
+
Edge:
|
|
117
|
+
* Add support for Chromium based implementation
|
|
118
|
+
|
|
1
119
|
4.0.0.alpha2 (2019-05-02)
|
|
2
120
|
=========================
|
|
3
121
|
|
|
@@ -34,6 +152,56 @@ Firefox:
|
|
|
34
152
|
result in NoMethodError. Now it will find a profile with such name on your
|
|
35
153
|
system and use it accordingly (issue #7119)
|
|
36
154
|
|
|
155
|
+
3.142.7 (2019-12-27)
|
|
156
|
+
====================
|
|
157
|
+
|
|
158
|
+
Ruby:
|
|
159
|
+
* Fix keyword argument deprecations in Ruby 2.7 (thanks @connorshea)
|
|
160
|
+
|
|
161
|
+
3.142.6 (2019-10-04)
|
|
162
|
+
====================
|
|
163
|
+
|
|
164
|
+
Ruby:
|
|
165
|
+
* Loosen ChildProcess dependency so that 3.0+ can be used (thanks @jaredbeck)
|
|
166
|
+
|
|
167
|
+
3.142.5 (2019-10-01)
|
|
168
|
+
====================
|
|
169
|
+
|
|
170
|
+
Ruby:
|
|
171
|
+
* Loosen RubyZip dependency so that 1.3+ can be used (thanks @vtamara)
|
|
172
|
+
|
|
173
|
+
3.142.4 (2019-09-02)
|
|
174
|
+
====================
|
|
175
|
+
|
|
176
|
+
Chrome:
|
|
177
|
+
* Added support for new command for getting logs in ChromeDriver 76+
|
|
178
|
+
with W3C mode on
|
|
179
|
+
|
|
180
|
+
3.142.3 (2019-05-21)
|
|
181
|
+
====================
|
|
182
|
+
|
|
183
|
+
Firefox:
|
|
184
|
+
* Fixed a regression when Firefox binary path was not sent to GeckoDriver
|
|
185
|
+
by default and browser could not be located (issue #7219)
|
|
186
|
+
|
|
187
|
+
3.142.2 (2019-05-11)
|
|
188
|
+
====================
|
|
189
|
+
|
|
190
|
+
Chrome:
|
|
191
|
+
* Fixed an issue when getting/setting network conditions and sending CDP
|
|
192
|
+
commands didn't work with Grid (issue #7174)
|
|
193
|
+
|
|
194
|
+
Safari:
|
|
195
|
+
* Fixed an issue when getting/setting permissions and attaching debugger
|
|
196
|
+
didn't work with Grid (issue #7174)
|
|
197
|
+
|
|
198
|
+
3.142.1 (2019-05-07)
|
|
199
|
+
====================
|
|
200
|
+
|
|
201
|
+
Firefox:
|
|
202
|
+
* Fixed an issue when processing error in legacy driver would result
|
|
203
|
+
in NoMethodError (issue #7178)
|
|
204
|
+
|
|
37
205
|
3.142.0 (2019-04-24)
|
|
38
206
|
====================
|
|
39
207
|
|
|
@@ -566,11 +734,11 @@ Ruby:
|
|
|
566
734
|
* Fix bug in auto detection of drivers which allowed selection of non-executable binaries
|
|
567
735
|
|
|
568
736
|
W3C:
|
|
569
|
-
* Implement #cookie_named and #delete_all_cookies methods (thanks lmtierney)
|
|
570
|
-
* Implement element #property method (thanks lmtierney)
|
|
737
|
+
* Implement #cookie_named and #delete_all_cookies methods (thanks lmtierney)
|
|
738
|
+
* Implement element #property method (thanks lmtierney)
|
|
571
739
|
|
|
572
740
|
Chrome:
|
|
573
|
-
* Fix bug in switches (thanks danvine)
|
|
741
|
+
* Fix bug in switches (thanks danvine)
|
|
574
742
|
|
|
575
743
|
3.0.1 (2016-11-06)
|
|
576
744
|
===================
|
|
@@ -592,7 +760,7 @@ Ruby:
|
|
|
592
760
|
* Add support for latest driver options
|
|
593
761
|
* Add support for :port parameter for launching driver
|
|
594
762
|
* Add support for :service_args parameter for driver command line switches
|
|
595
|
-
* Improve reliability by increasing service shutdown timeout (#2815; thanks John Barbuto )
|
|
763
|
+
* Improve reliability by increasing service shutdown timeout (#2815; thanks John Barbuto )
|
|
596
764
|
|
|
597
765
|
Firefox:
|
|
598
766
|
* Add support for :firefox_options in geckodriver
|
data/LICENSE
CHANGED
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
same "printed page" as the copyright notice for easier
|
|
188
188
|
identification within third-party archives.
|
|
189
189
|
|
|
190
|
-
Copyright
|
|
190
|
+
Copyright 2020 Software Freedom Conservancy (SFC)
|
|
191
191
|
|
|
192
192
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
193
|
you may not use this file except in compliance with the License.
|
data/lib/selenium/server.rb
CHANGED
|
@@ -74,7 +74,7 @@ module Selenium
|
|
|
74
74
|
|
|
75
75
|
begin
|
|
76
76
|
File.open(download_file_name, 'wb') do |destination|
|
|
77
|
-
|
|
77
|
+
net_http_start('selenium-release.storage.googleapis.com') do |http|
|
|
78
78
|
resp = http.request_get("/#{required_version[/(\d+\.\d+)\./, 1]}/#{download_file_name}") do |response|
|
|
79
79
|
total = response.content_length
|
|
80
80
|
progress = 0
|
|
@@ -85,7 +85,7 @@ module Selenium
|
|
|
85
85
|
segment_count += 1
|
|
86
86
|
|
|
87
87
|
if (segment_count % 15).zero?
|
|
88
|
-
percent =
|
|
88
|
+
percent = progress.fdiv(total) * 100
|
|
89
89
|
print "#{CL_RESET}Downloading #{download_file_name}: #{percent.to_i}% (#{progress} / #{total})"
|
|
90
90
|
segment_count = 0
|
|
91
91
|
end
|
|
@@ -97,7 +97,7 @@ module Selenium
|
|
|
97
97
|
raise Error, "#{resp.code} for #{download_file_name}" unless resp.is_a? Net::HTTPSuccess
|
|
98
98
|
end
|
|
99
99
|
end
|
|
100
|
-
rescue
|
|
100
|
+
rescue StandardError
|
|
101
101
|
FileUtils.rm download_file_name if File.exist? download_file_name
|
|
102
102
|
raise
|
|
103
103
|
end
|
|
@@ -111,7 +111,7 @@ module Selenium
|
|
|
111
111
|
|
|
112
112
|
def latest
|
|
113
113
|
require 'rexml/document'
|
|
114
|
-
|
|
114
|
+
net_http_start('selenium-release.storage.googleapis.com') do |http|
|
|
115
115
|
versions = REXML::Document.new(http.get('/').body).root.get_elements('//Contents/Key').map do |e|
|
|
116
116
|
e.text[/selenium-server-standalone-(\d+\.\d+\.\d+)\.jar/, 1]
|
|
117
117
|
end
|
|
@@ -120,20 +120,27 @@ module Selenium
|
|
|
120
120
|
end
|
|
121
121
|
end
|
|
122
122
|
|
|
123
|
-
def
|
|
123
|
+
def net_http_start(address, &block)
|
|
124
124
|
http_proxy = ENV['http_proxy'] || ENV['HTTP_PROXY']
|
|
125
125
|
|
|
126
126
|
if http_proxy
|
|
127
127
|
http_proxy = "http://#{http_proxy}" unless http_proxy.start_with?('http://')
|
|
128
128
|
uri = URI.parse(http_proxy)
|
|
129
129
|
|
|
130
|
-
Net::HTTP
|
|
130
|
+
Net::HTTP.start(address, nil, uri.host, uri.port, &block)
|
|
131
131
|
else
|
|
132
|
-
Net::HTTP
|
|
132
|
+
Net::HTTP.start(address, &block)
|
|
133
133
|
end
|
|
134
134
|
end
|
|
135
135
|
end
|
|
136
136
|
|
|
137
|
+
#
|
|
138
|
+
# The Mode of the Server
|
|
139
|
+
# :standalone, #hub, #node
|
|
140
|
+
#
|
|
141
|
+
|
|
142
|
+
attr_accessor :role
|
|
143
|
+
|
|
137
144
|
#
|
|
138
145
|
# The server port
|
|
139
146
|
#
|
|
@@ -175,11 +182,12 @@ module Selenium
|
|
|
175
182
|
|
|
176
183
|
@jar = jar
|
|
177
184
|
@host = '127.0.0.1'
|
|
185
|
+
@role = opts.fetch(:role, 'standalone')
|
|
178
186
|
@port = opts.fetch(:port, 4444)
|
|
179
187
|
@timeout = opts.fetch(:timeout, 30)
|
|
180
188
|
@background = opts.fetch(:background, false)
|
|
181
189
|
@log = opts[:log]
|
|
182
|
-
|
|
190
|
+
@log_file = nil
|
|
183
191
|
@additional_args = []
|
|
184
192
|
end
|
|
185
193
|
|
|
@@ -216,6 +224,10 @@ module Selenium
|
|
|
216
224
|
|
|
217
225
|
private
|
|
218
226
|
|
|
227
|
+
def selenium4?
|
|
228
|
+
@jar.match?(/[^\.][4]\./) || @jar.include?('deploy')
|
|
229
|
+
end
|
|
230
|
+
|
|
219
231
|
def stop_process
|
|
220
232
|
return unless @process.alive?
|
|
221
233
|
|
|
@@ -234,7 +246,11 @@ module Selenium
|
|
|
234
246
|
@process ||= begin
|
|
235
247
|
# extract any additional_args that start with -D as options
|
|
236
248
|
properties = @additional_args.dup - @additional_args.delete_if { |arg| arg[/^-D/] }
|
|
237
|
-
|
|
249
|
+
args = ['-jar', @jar]
|
|
250
|
+
args << @role if selenium4?
|
|
251
|
+
args << (selenium4? ? '--port' : '-port')
|
|
252
|
+
args << @port.to_s
|
|
253
|
+
server_command = ['java'] + properties + args + @additional_args
|
|
238
254
|
cp = ChildProcess.build(*server_command)
|
|
239
255
|
WebDriver.logger.debug("Executing Process #{server_command}")
|
|
240
256
|
|
data/lib/selenium/webdriver.rb
CHANGED
|
@@ -23,9 +23,10 @@ require 'fileutils'
|
|
|
23
23
|
require 'date'
|
|
24
24
|
require 'json'
|
|
25
25
|
require 'set'
|
|
26
|
+
require 'websocket'
|
|
26
27
|
|
|
27
|
-
require 'selenium/webdriver/common'
|
|
28
28
|
require 'selenium/webdriver/atoms'
|
|
29
|
+
require 'selenium/webdriver/common'
|
|
29
30
|
require 'selenium/webdriver/version'
|
|
30
31
|
|
|
31
32
|
module Selenium
|
|
@@ -35,13 +36,16 @@ module Selenium
|
|
|
35
36
|
Rectangle = Struct.new(:x, :y, :width, :height)
|
|
36
37
|
Location = Struct.new(:latitude, :longitude, :altitude)
|
|
37
38
|
|
|
38
|
-
autoload :Chrome,
|
|
39
|
-
autoload :
|
|
40
|
-
autoload :
|
|
41
|
-
autoload :
|
|
42
|
-
autoload :
|
|
43
|
-
autoload :
|
|
44
|
-
autoload :
|
|
39
|
+
autoload :Chrome, 'selenium/webdriver/chrome'
|
|
40
|
+
autoload :DevTools, 'selenium/webdriver/devtools'
|
|
41
|
+
autoload :Edge, 'selenium/webdriver/edge'
|
|
42
|
+
autoload :EdgeHtml, 'selenium/webdriver/edge'
|
|
43
|
+
autoload :EdgeChrome, 'selenium/webdriver/edge'
|
|
44
|
+
autoload :Firefox, 'selenium/webdriver/firefox'
|
|
45
|
+
autoload :IE, 'selenium/webdriver/ie'
|
|
46
|
+
autoload :Remote, 'selenium/webdriver/remote'
|
|
47
|
+
autoload :Safari, 'selenium/webdriver/safari'
|
|
48
|
+
autoload :Support, 'selenium/webdriver/support'
|
|
45
49
|
|
|
46
50
|
# @api private
|
|
47
51
|
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
function(){return (function(){var k=this||self;function aa(a){return"string"==typeof a}function ba(a,b){a=a.split(".");var c=k;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b}
|
|
2
|
+
function ca(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
|
|
3
|
+
else if("function"==b&&"undefined"==typeof a.call)return"object";return b}function da(a){return"function"==ca(a)}function ea(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}function ha(a,b,c){return a.call.apply(a.bind,arguments)}
|
|
4
|
+
function ia(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}}function ja(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ja=ha:ja=ia;return ja.apply(null,arguments)}
|
|
5
|
+
function ka(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}}function l(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a};/*
|
|
6
|
+
|
|
7
|
+
The MIT License
|
|
8
|
+
|
|
9
|
+
Copyright (c) 2007 Cybozu Labs, Inc.
|
|
10
|
+
Copyright (c) 2012 Google Inc.
|
|
11
|
+
|
|
12
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
+
of this software and associated documentation files (the "Software"), to
|
|
14
|
+
deal in the Software without restriction, including without limitation the
|
|
15
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
16
|
+
sell copies of the Software, and to permit persons to whom the Software is
|
|
17
|
+
furnished to do so, subject to the following conditions:
|
|
18
|
+
|
|
19
|
+
The above copyright notice and this permission notice shall be included in
|
|
20
|
+
all copies or substantial portions of the Software.
|
|
21
|
+
|
|
22
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
27
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
28
|
+
IN THE SOFTWARE.
|
|
29
|
+
*/
|
|
30
|
+
function la(a,b,c){this.a=a;this.b=b||1;this.f=c||1};var ma;var na=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},q=Array.prototype.forEach?function(a,b,c){Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e="string"===typeof a?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)},oa=Array.prototype.filter?function(a,b){return Array.prototype.filter.call(a,
|
|
31
|
+
b,void 0)}:function(a,b){for(var c=a.length,d=[],e=0,f="string"===typeof a?a.split(""):a,g=0;g<c;g++)if(g in f){var h=f[g];b.call(void 0,h,g,a)&&(d[e++]=h)}return d},pa=Array.prototype.map?function(a,b){return Array.prototype.map.call(a,b,void 0)}:function(a,b){for(var c=a.length,d=Array(c),e="string"===typeof a?a.split(""):a,f=0;f<c;f++)f in e&&(d[f]=b.call(void 0,e[f],f,a));return d},qa=Array.prototype.reduce?function(a,b,c){return Array.prototype.reduce.call(a,b,c)}:function(a,b,c){var d=c;q(a,
|
|
32
|
+
function(e,f){d=b.call(void 0,d,e,f,a)});return d},ra=Array.prototype.some?function(a,b){return Array.prototype.some.call(a,b,void 0)}:function(a,b){for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a))return!0;return!1},sa=Array.prototype.every?function(a,b,c){return Array.prototype.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e="string"===typeof a?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};
|
|
33
|
+
function ta(a,b){a:{for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a)){b=e;break a}b=-1}return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}function ua(a){return Array.prototype.concat.apply([],arguments)}function va(a,b,c){return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};function wa(a){var b=a.length-1;return 0<=b&&a.indexOf(" ",b)==b}var xa=String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};
|
|
34
|
+
function ya(a,b){var c=0;a=xa(String(a)).split(".");b=xa(String(b)).split(".");for(var d=Math.max(a.length,b.length),e=0;0==c&&e<d;e++){var f=a[e]||"",g=b[e]||"";do{f=/(\d*)(\D*)(.*)/.exec(f)||["","","",""];g=/(\d*)(\D*)(.*)/.exec(g)||["","","",""];if(0==f[0].length&&0==g[0].length)break;c=za(0==f[1].length?0:parseInt(f[1],10),0==g[1].length?0:parseInt(g[1],10))||za(0==f[2].length,0==g[2].length)||za(f[2],g[2]);f=f[3];g=g[3]}while(0==c)}return c}function za(a,b){return a<b?-1:a>b?1:0};var r;a:{var Aa=k.navigator;if(Aa){var Ba=Aa.userAgent;if(Ba){r=Ba;break a}}r=""}function v(a){return-1!=r.indexOf(a)};function Ca(){return v("Firefox")||v("FxiOS")}function Da(){return(v("Chrome")||v("CriOS"))&&!v("Edge")};function Ea(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};function Fa(){return v("iPhone")&&!v("iPod")&&!v("iPad")};function Ga(a,b){var c=Ha;return Object.prototype.hasOwnProperty.call(c,a)?c[a]:c[a]=b(a)};var Ia=v("Opera"),w=v("Trident")||v("MSIE"),Ja=v("Edge"),Ka=v("Gecko")&&!(-1!=r.toLowerCase().indexOf("webkit")&&!v("Edge"))&&!(v("Trident")||v("MSIE"))&&!v("Edge"),La=-1!=r.toLowerCase().indexOf("webkit")&&!v("Edge");function Ma(){var a=k.document;return a?a.documentMode:void 0}var Na;
|
|
35
|
+
a:{var Oa="",Pa=function(){var a=r;if(Ka)return/rv:([^\);]+)(\)|;)/.exec(a);if(Ja)return/Edge\/([\d\.]+)/.exec(a);if(w)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(La)return/WebKit\/(\S+)/.exec(a);if(Ia)return/(?:Version)[ \/]?(\S+)/.exec(a)}();Pa&&(Oa=Pa?Pa[1]:"");if(w){var Qa=Ma();if(null!=Qa&&Qa>parseFloat(Oa)){Na=String(Qa);break a}}Na=Oa}var Ha={};function Ra(a){return Ga(a,function(){return 0<=ya(Na,a)})}var x;x=k.document&&w?Ma():void 0;var y=w&&!(9<=Number(x)),Sa=w&&!(8<=Number(x));function Ta(a,b,c,d){this.a=a;this.nodeName=c;this.nodeValue=d;this.nodeType=2;this.parentNode=this.ownerElement=b}function Ua(a,b){var c=Sa&&"href"==b.nodeName?a.getAttribute(b.nodeName,2):b.nodeValue;return new Ta(b,a,b.nodeName,c)};function Va(a){this.b=a;this.a=0}function Wa(a){a=a.match(Xa);for(var b=0;b<a.length;b++)Ya.test(a[b])&&a.splice(b,1);return new Va(a)}var Xa=/\$?(?:(?![0-9-\.])(?:\*|[\w-\.]+):)?(?![0-9-\.])(?:\*|[\w-\.]+)|\/\/|\.\.|::|\d+(?:\.\d*)?|\.\d+|"[^"]*"|'[^']*'|[!<>]=|\s+|./g,Ya=/^\s/;function z(a,b){return a.b[a.a+(b||0)]}function A(a){return a.b[a.a++]}function Za(a){return a.b.length<=a.a};function $a(a,b){this.x=void 0!==a?a:0;this.y=void 0!==b?b:0}$a.prototype.ceil=function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this};$a.prototype.floor=function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this};$a.prototype.round=function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this};function ab(a,b){this.width=a;this.height=b}ab.prototype.aspectRatio=function(){return this.width/this.height};ab.prototype.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};ab.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};ab.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};function bb(a){return a?new cb(B(a)):ma||(ma=new cb)}function db(a){for(;a&&1!=a.nodeType;)a=a.previousSibling;return a}function eb(a,b){if(!a||!b)return!1;if(a.contains&&1==b.nodeType)return a==b||a.contains(b);if("undefined"!=typeof a.compareDocumentPosition)return a==b||!!(a.compareDocumentPosition(b)&16);for(;b&&a!=b;)b=b.parentNode;return b==a}
|
|
36
|
+
function fb(a,b){if(a==b)return 0;if(a.compareDocumentPosition)return a.compareDocumentPosition(b)&2?1:-1;if(w&&!(9<=Number(x))){if(9==a.nodeType)return-1;if(9==b.nodeType)return 1}if("sourceIndex"in a||a.parentNode&&"sourceIndex"in a.parentNode){var c=1==a.nodeType,d=1==b.nodeType;if(c&&d)return a.sourceIndex-b.sourceIndex;var e=a.parentNode,f=b.parentNode;return e==f?gb(a,b):!c&&eb(e,b)?-1*hb(a,b):!d&&eb(f,a)?hb(b,a):(c?a.sourceIndex:e.sourceIndex)-(d?b.sourceIndex:f.sourceIndex)}d=B(a);c=d.createRange();
|
|
37
|
+
c.selectNode(a);c.collapse(!0);a=d.createRange();a.selectNode(b);a.collapse(!0);return c.compareBoundaryPoints(k.Range.START_TO_END,a)}function hb(a,b){var c=a.parentNode;if(c==b)return-1;for(;b.parentNode!=c;)b=b.parentNode;return gb(b,a)}function gb(a,b){for(;b=b.previousSibling;)if(b==a)return-1;return 1}function B(a){return 9==a.nodeType?a:a.ownerDocument||a.document}function ib(a,b){a&&(a=a.parentNode);for(var c=0;a;){if(b(a))return a;a=a.parentNode;c++}return null}
|
|
38
|
+
function cb(a){this.a=a||k.document||document}cb.prototype.getElementsByTagName=function(a,b){return(b||this.a).getElementsByTagName(String(a))};
|
|
39
|
+
function jb(a,b,c,d){a=d||a.a;var e=b&&"*"!=b?String(b).toUpperCase():"";if(a.querySelectorAll&&a.querySelector&&(e||c))c=a.querySelectorAll(e+(c?"."+c:""));else if(c&&a.getElementsByClassName)if(b=a.getElementsByClassName(c),e){a={};for(var f=d=0,g;g=b[f];f++)e==g.nodeName&&(a[d++]=g);a.length=d;c=a}else c=b;else if(b=a.getElementsByTagName(e||"*"),c){a={};for(f=d=0;g=b[f];f++){e=g.className;var h;if(h="function"==typeof e.split)h=0<=na(e.split(/\s+/),c);h&&(a[d++]=g)}a.length=d;c=a}else c=b;return c}
|
|
40
|
+
;function C(a){var b=null,c=a.nodeType;1==c&&(b=a.textContent,b=void 0==b||null==b?a.innerText:b,b=void 0==b||null==b?"":b);if("string"!=typeof b)if(y&&"title"==a.nodeName.toLowerCase()&&1==c)b=a.text;else if(9==c||1==c){a=9==c?a.documentElement:a.firstChild;c=0;var d=[];for(b="";a;){do 1!=a.nodeType&&(b+=a.nodeValue),y&&"title"==a.nodeName.toLowerCase()&&(b+=a.text),d[c++]=a;while(a=a.firstChild);for(;c&&!(a=d[--c].nextSibling););}}else b=a.nodeValue;return b}
|
|
41
|
+
function kb(a,b,c){if(null===b)return!0;try{if(!a.getAttribute)return!1}catch(d){return!1}Sa&&"class"==b&&(b="className");return null==c?!!a.getAttribute(b):a.getAttribute(b,2)==c}function lb(a,b,c,d,e){return(y?mb:nb).call(null,a,b,aa(c)?c:null,aa(d)?d:null,e||new D)}
|
|
42
|
+
function mb(a,b,c,d,e){if(a instanceof ob||8==a.b||c&&null===a.b){var f=b.all;if(!f)return e;a=pb(a);if("*"!=a&&(f=b.getElementsByTagName(a),!f))return e;if(c){for(var g=[],h=0;b=f[h++];)kb(b,c,d)&&g.push(b);f=g}for(h=0;b=f[h++];)"*"==a&&"!"==b.tagName||e.add(b);return e}qb(a,b,c,d,e);return e}
|
|
43
|
+
function nb(a,b,c,d,e){b.getElementsByName&&d&&"name"==c&&!w?(b=b.getElementsByName(d),q(b,function(f){a.a(f)&&e.add(f)})):b.getElementsByClassName&&d&&"class"==c?(b=b.getElementsByClassName(d),q(b,function(f){f.className==d&&a.a(f)&&e.add(f)})):a instanceof E?qb(a,b,c,d,e):b.getElementsByTagName&&(b=b.getElementsByTagName(a.f()),q(b,function(f){kb(f,c,d)&&e.add(f)}));return e}
|
|
44
|
+
function rb(a,b,c,d,e){var f;if((a instanceof ob||8==a.b||c&&null===a.b)&&(f=b.childNodes)){var g=pb(a);if("*"!=g&&(f=oa(f,function(h){return h.tagName&&h.tagName.toLowerCase()==g}),!f))return e;c&&(f=oa(f,function(h){return kb(h,c,d)}));q(f,function(h){"*"==g&&("!"==h.tagName||"*"==g&&1!=h.nodeType)||e.add(h)});return e}return sb(a,b,c,d,e)}function sb(a,b,c,d,e){for(b=b.firstChild;b;b=b.nextSibling)kb(b,c,d)&&a.a(b)&&e.add(b);return e}
|
|
45
|
+
function qb(a,b,c,d,e){for(b=b.firstChild;b;b=b.nextSibling)kb(b,c,d)&&a.a(b)&&e.add(b),qb(a,b,c,d,e)}function pb(a){if(a instanceof E){if(8==a.b)return"!";if(null===a.b)return"*"}return a.f()};function D(){this.b=this.a=null;this.m=0}function tb(a){this.f=a;this.a=this.b=null}function ub(a,b){if(!a.a)return b;if(!b.a)return a;var c=a.a;b=b.a;for(var d=null,e,f=0;c&&b;){e=c.f;var g=b.f;e==g||e instanceof Ta&&g instanceof Ta&&e.a==g.a?(e=c,c=c.a,b=b.a):0<fb(c.f,b.f)?(e=b,b=b.a):(e=c,c=c.a);(e.b=d)?d.a=e:a.a=e;d=e;f++}for(e=c||b;e;)e.b=d,d=d.a=e,f++,e=e.a;a.b=d;a.m=f;return a}function vb(a,b){b=new tb(b);b.a=a.a;a.b?a.a.b=b:a.a=a.b=b;a.a=b;a.m++}
|
|
46
|
+
D.prototype.add=function(a){a=new tb(a);a.b=this.b;this.a?this.b.a=a:this.a=this.b=a;this.b=a;this.m++};function wb(a){return(a=a.a)?a.f:null}function xb(a){return(a=wb(a))?C(a):""}function yb(a,b){return new zb(a,!!b)}function zb(a,b){this.f=a;this.b=(this.v=b)?a.b:a.a;this.a=null}function F(a){var b=a.b;if(null==b)return null;var c=a.a=b;a.b=a.v?b.b:b.a;return c.f};function H(a){this.i=a;this.b=this.g=!1;this.f=null}function I(a){return"\n "+a.toString().split("\n").join("\n ")}function Ab(a,b){a.g=b}function Bb(a,b){a.b=b}function J(a,b){a=a.a(b);return a instanceof D?+xb(a):+a}function K(a,b){a=a.a(b);return a instanceof D?xb(a):""+a}function Cb(a,b){a=a.a(b);return a instanceof D?!!a.m:!!a};function Db(a,b,c){H.call(this,a.i);this.c=a;this.h=b;this.u=c;this.g=b.g||c.g;this.b=b.b||c.b;this.c==Eb&&(c.b||c.g||4==c.i||0==c.i||!b.f?b.b||b.g||4==b.i||0==b.i||!c.f||(this.f={name:c.f.name,A:b}):this.f={name:b.f.name,A:c})}l(Db,H);
|
|
47
|
+
function Gb(a,b,c,d,e){b=b.a(d);c=c.a(d);var f;if(b instanceof D&&c instanceof D){b=yb(b);for(d=F(b);d;d=F(b))for(e=yb(c),f=F(e);f;f=F(e))if(a(C(d),C(f)))return!0;return!1}if(b instanceof D||c instanceof D){b instanceof D?(e=b,d=c):(e=c,d=b);f=yb(e);for(var g=typeof d,h=F(f);h;h=F(f)){switch(g){case "number":h=+C(h);break;case "boolean":h=!!C(h);break;case "string":h=C(h);break;default:throw Error("Illegal primitive type for comparison.");}if(e==b&&a(h,d)||e==c&&a(d,h))return!0}return!1}return e?
|
|
48
|
+
"boolean"==typeof b||"boolean"==typeof c?a(!!b,!!c):"number"==typeof b||"number"==typeof c?a(+b,+c):a(b,c):a(+b,+c)}Db.prototype.a=function(a){return this.c.s(this.h,this.u,a)};Db.prototype.toString=function(){var a="Binary Expression: "+this.c;a+=I(this.h);return a+=I(this.u)};function Hb(a,b,c,d){this.Z=a;this.M=b;this.i=c;this.s=d}Hb.prototype.toString=function(){return this.Z};var Ib={};
|
|
49
|
+
function L(a,b,c,d){if(Ib.hasOwnProperty(a))throw Error("Binary operator already created: "+a);a=new Hb(a,b,c,d);return Ib[a.toString()]=a}L("div",6,1,function(a,b,c){return J(a,c)/J(b,c)});L("mod",6,1,function(a,b,c){return J(a,c)%J(b,c)});L("*",6,1,function(a,b,c){return J(a,c)*J(b,c)});L("+",5,1,function(a,b,c){return J(a,c)+J(b,c)});L("-",5,1,function(a,b,c){return J(a,c)-J(b,c)});L("<",4,2,function(a,b,c){return Gb(function(d,e){return d<e},a,b,c)});
|
|
50
|
+
L(">",4,2,function(a,b,c){return Gb(function(d,e){return d>e},a,b,c)});L("<=",4,2,function(a,b,c){return Gb(function(d,e){return d<=e},a,b,c)});L(">=",4,2,function(a,b,c){return Gb(function(d,e){return d>=e},a,b,c)});var Eb=L("=",3,2,function(a,b,c){return Gb(function(d,e){return d==e},a,b,c,!0)});L("!=",3,2,function(a,b,c){return Gb(function(d,e){return d!=e},a,b,c,!0)});L("and",2,2,function(a,b,c){return Cb(a,c)&&Cb(b,c)});L("or",1,2,function(a,b,c){return Cb(a,c)||Cb(b,c)});function Jb(a,b){if(b.a.length&&4!=a.i)throw Error("Primary expression must evaluate to nodeset if filter has predicate(s).");H.call(this,a.i);this.c=a;this.h=b;this.g=a.g;this.b=a.b}l(Jb,H);Jb.prototype.a=function(a){a=this.c.a(a);return Kb(this.h,a)};Jb.prototype.toString=function(){var a="Filter:"+I(this.c);return a+=I(this.h)};function Lb(a,b){if(b.length<a.L)throw Error("Function "+a.l+" expects at least"+a.L+" arguments, "+b.length+" given");if(null!==a.G&&b.length>a.G)throw Error("Function "+a.l+" expects at most "+a.G+" arguments, "+b.length+" given");a.Y&&q(b,function(c,d){if(4!=c.i)throw Error("Argument "+d+" to function "+a.l+" is not of type Nodeset: "+c);});H.call(this,a.i);this.C=a;this.c=b;Ab(this,a.g||ra(b,function(c){return c.g}));Bb(this,a.X&&!b.length||a.W&&!!b.length||ra(b,function(c){return c.b}))}
|
|
51
|
+
l(Lb,H);Lb.prototype.a=function(a){return this.C.s.apply(null,ua(a,this.c))};Lb.prototype.toString=function(){var a="Function: "+this.C;if(this.c.length){var b=qa(this.c,function(c,d){return c+I(d)},"Arguments:");a+=I(b)}return a};function Mb(a,b,c,d,e,f,g,h){this.l=a;this.i=b;this.g=c;this.X=d;this.W=!1;this.s=e;this.L=f;this.G=void 0!==g?g:f;this.Y=!!h}Mb.prototype.toString=function(){return this.l};var Nb={};
|
|
52
|
+
function M(a,b,c,d,e,f,g,h){if(Nb.hasOwnProperty(a))throw Error("Function already created: "+a+".");Nb[a]=new Mb(a,b,c,d,e,f,g,h)}M("boolean",2,!1,!1,function(a,b){return Cb(b,a)},1);M("ceiling",1,!1,!1,function(a,b){return Math.ceil(J(b,a))},1);M("concat",3,!1,!1,function(a,b){return qa(va(arguments,1),function(c,d){return c+K(d,a)},"")},2,null);M("contains",2,!1,!1,function(a,b,c){b=K(b,a);a=K(c,a);return a=-1!=b.indexOf(a)},2);M("count",1,!1,!1,function(a,b){return b.a(a).m},1,1,!0);
|
|
53
|
+
M("false",2,!1,!1,function(){return!1},0);M("floor",1,!1,!1,function(a,b){return Math.floor(J(b,a))},1);M("id",4,!1,!1,function(a,b){function c(h){if(y){var n=e.all[h];if(n){if(n.nodeType&&h==n.id)return n;if(n.length)return ta(n,function(t){return h==t.id})}return null}return e.getElementById(h)}var d=a.a,e=9==d.nodeType?d:d.ownerDocument;a=K(b,a).split(/\s+/);var f=[];q(a,function(h){h=c(h);!h||0<=na(f,h)||f.push(h)});f.sort(fb);var g=new D;q(f,function(h){g.add(h)});return g},1);
|
|
54
|
+
M("lang",2,!1,!1,function(){return!1},1);M("last",1,!0,!1,function(a){if(1!=arguments.length)throw Error("Function last expects ()");return a.f},0);M("local-name",3,!1,!0,function(a,b){return(a=b?wb(b.a(a)):a.a)?a.localName||a.nodeName.toLowerCase():""},0,1,!0);M("name",3,!1,!0,function(a,b){return(a=b?wb(b.a(a)):a.a)?a.nodeName.toLowerCase():""},0,1,!0);M("namespace-uri",3,!0,!1,function(){return""},0,1,!0);
|
|
55
|
+
M("normalize-space",3,!1,!0,function(a,b){return(b?K(b,a):C(a.a)).replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")},0,1);M("not",2,!1,!1,function(a,b){return!Cb(b,a)},1);M("number",1,!1,!0,function(a,b){return b?J(b,a):+C(a.a)},0,1);M("position",1,!0,!1,function(a){return a.b},0);M("round",1,!1,!1,function(a,b){return Math.round(J(b,a))},1);M("starts-with",2,!1,!1,function(a,b,c){b=K(b,a);a=K(c,a);return 0==b.lastIndexOf(a,0)},2);M("string",3,!1,!0,function(a,b){return b?K(b,a):C(a.a)},0,1);
|
|
56
|
+
M("string-length",1,!1,!0,function(a,b){return(b?K(b,a):C(a.a)).length},0,1);M("substring",3,!1,!1,function(a,b,c,d){c=J(c,a);if(isNaN(c)||Infinity==c||-Infinity==c)return"";d=d?J(d,a):Infinity;if(isNaN(d)||-Infinity===d)return"";c=Math.round(c)-1;var e=Math.max(c,0);a=K(b,a);return Infinity==d?a.substring(e):a.substring(e,c+Math.round(d))},2,3);M("substring-after",3,!1,!1,function(a,b,c){b=K(b,a);a=K(c,a);c=b.indexOf(a);return-1==c?"":b.substring(c+a.length)},2);
|
|
57
|
+
M("substring-before",3,!1,!1,function(a,b,c){b=K(b,a);a=K(c,a);a=b.indexOf(a);return-1==a?"":b.substring(0,a)},2);M("sum",1,!1,!1,function(a,b){a=yb(b.a(a));b=0;for(var c=F(a);c;c=F(a))b+=+C(c);return b},1,1,!0);M("translate",3,!1,!1,function(a,b,c,d){b=K(b,a);c=K(c,a);var e=K(d,a);a={};for(d=0;d<c.length;d++){var f=c.charAt(d);f in a||(a[f]=e.charAt(d))}c="";for(d=0;d<b.length;d++)f=b.charAt(d),c+=f in a?a[f]:f;return c},3);M("true",2,!1,!1,function(){return!0},0);function E(a,b){this.h=a;this.c=void 0!==b?b:null;this.b=null;switch(a){case "comment":this.b=8;break;case "text":this.b=3;break;case "processing-instruction":this.b=7;break;case "node":break;default:throw Error("Unexpected argument");}}function Ob(a){return"comment"==a||"text"==a||"processing-instruction"==a||"node"==a}E.prototype.a=function(a){return null===this.b||this.b==a.nodeType};E.prototype.f=function(){return this.h};
|
|
58
|
+
E.prototype.toString=function(){var a="Kind Test: "+this.h;null===this.c||(a+=I(this.c));return a};function Pb(a){H.call(this,3);this.c=a.substring(1,a.length-1)}l(Pb,H);Pb.prototype.a=function(){return this.c};Pb.prototype.toString=function(){return"Literal: "+this.c};function ob(a,b){this.l=a.toLowerCase();a="*"==this.l?"*":"http://www.w3.org/1999/xhtml";this.c=b?b.toLowerCase():a}ob.prototype.a=function(a){var b=a.nodeType;if(1!=b&&2!=b)return!1;b=void 0!==a.localName?a.localName:a.nodeName;return"*"!=this.l&&this.l!=b.toLowerCase()?!1:"*"==this.c?!0:this.c==(a.namespaceURI?a.namespaceURI.toLowerCase():"http://www.w3.org/1999/xhtml")};ob.prototype.f=function(){return this.l};
|
|
59
|
+
ob.prototype.toString=function(){return"Name Test: "+("http://www.w3.org/1999/xhtml"==this.c?"":this.c+":")+this.l};function Qb(a){H.call(this,1);this.c=a}l(Qb,H);Qb.prototype.a=function(){return this.c};Qb.prototype.toString=function(){return"Number: "+this.c};function Rb(a,b){H.call(this,a.i);this.h=a;this.c=b;this.g=a.g;this.b=a.b;1==this.c.length&&(a=this.c[0],a.F||a.c!=Sb||(a=a.u,"*"!=a.f()&&(this.f={name:a.f(),A:null})))}l(Rb,H);function Tb(){H.call(this,4)}l(Tb,H);Tb.prototype.a=function(a){var b=new D;a=a.a;9==a.nodeType?b.add(a):b.add(a.ownerDocument);return b};Tb.prototype.toString=function(){return"Root Helper Expression"};function Ub(){H.call(this,4)}l(Ub,H);Ub.prototype.a=function(a){var b=new D;b.add(a.a);return b};Ub.prototype.toString=function(){return"Context Helper Expression"};
|
|
60
|
+
function Vb(a){return"/"==a||"//"==a}Rb.prototype.a=function(a){var b=this.h.a(a);if(!(b instanceof D))throw Error("Filter expression must evaluate to nodeset.");a=this.c;for(var c=0,d=a.length;c<d&&b.m;c++){var e=a[c],f=yb(b,e.c.v);if(e.g||e.c!=Wb)if(e.g||e.c!=Xb){var g=F(f);for(b=e.a(new la(g));null!=(g=F(f));)g=e.a(new la(g)),b=ub(b,g)}else g=F(f),b=e.a(new la(g));else{for(g=F(f);(b=F(f))&&(!g.contains||g.contains(b))&&b.compareDocumentPosition(g)&8;g=b);b=e.a(new la(g))}}return b};
|
|
61
|
+
Rb.prototype.toString=function(){var a="Path Expression:"+I(this.h);if(this.c.length){var b=qa(this.c,function(c,d){return c+I(d)},"Steps:");a+=I(b)}return a};function Yb(a,b){this.a=a;this.v=!!b}
|
|
62
|
+
function Kb(a,b,c){for(c=c||0;c<a.a.length;c++)for(var d=a.a[c],e=yb(b),f=b.m,g,h=0;g=F(e);h++){var n=a.v?f-h:h+1;g=d.a(new la(g,n,f));if("number"==typeof g)n=n==g;else if("string"==typeof g||"boolean"==typeof g)n=!!g;else if(g instanceof D)n=0<g.m;else throw Error("Predicate.evaluate returned an unexpected type.");if(!n){n=e;g=n.f;var t=n.a;if(!t)throw Error("Next must be called at least once before remove.");var p=t.b;t=t.a;p?p.a=t:g.a=t;t?t.b=p:g.b=p;g.m--;n.a=null}}return b}
|
|
63
|
+
Yb.prototype.toString=function(){return qa(this.a,function(a,b){return a+I(b)},"Predicates:")};function Zb(a,b,c,d){H.call(this,4);this.c=a;this.u=b;this.h=c||new Yb([]);this.F=!!d;b=this.h;b=0<b.a.length?b.a[0].f:null;a.aa&&b&&(a=b.name,a=y?a.toLowerCase():a,this.f={name:a,A:b.A});a:{a=this.h;for(b=0;b<a.a.length;b++)if(c=a.a[b],c.g||1==c.i||0==c.i){a=!0;break a}a=!1}this.g=a}l(Zb,H);
|
|
64
|
+
Zb.prototype.a=function(a){var b=a.a,c=this.f,d=null,e=null,f=0;c&&(d=c.name,e=c.A?K(c.A,a):null,f=1);if(this.F)if(this.g||this.c!=$b)if(b=yb((new Zb(ac,new E("node"))).a(a)),c=F(b))for(a=this.s(c,d,e,f);null!=(c=F(b));)a=ub(a,this.s(c,d,e,f));else a=new D;else a=lb(this.u,b,d,e),a=Kb(this.h,a,f);else a=this.s(a.a,d,e,f);return a};Zb.prototype.s=function(a,b,c,d){a=this.c.C(this.u,a,b,c);return a=Kb(this.h,a,d)};
|
|
65
|
+
Zb.prototype.toString=function(){var a="Step:"+I("Operator: "+(this.F?"//":"/"));this.c.l&&(a+=I("Axis: "+this.c));a+=I(this.u);if(this.h.a.length){var b=qa(this.h.a,function(c,d){return c+I(d)},"Predicates:");a+=I(b)}return a};function bc(a,b,c,d){this.l=a;this.C=b;this.v=c;this.aa=d}bc.prototype.toString=function(){return this.l};var cc={};function N(a,b,c,d){if(cc.hasOwnProperty(a))throw Error("Axis already created: "+a);b=new bc(a,b,c,!!d);return cc[a]=b}
|
|
66
|
+
N("ancestor",function(a,b){for(var c=new D;b=b.parentNode;)a.a(b)&&vb(c,b);return c},!0);N("ancestor-or-self",function(a,b){var c=new D;do a.a(b)&&vb(c,b);while(b=b.parentNode);return c},!0);
|
|
67
|
+
var Sb=N("attribute",function(a,b){var c=new D,d=a.f();if("style"==d&&y&&b.style)return c.add(new Ta(b.style,b,"style",b.style.cssText)),c;var e=b.attributes;if(e)if(a instanceof E&&null===a.b||"*"==d)for(a=0;d=e[a];a++)y?d.nodeValue&&c.add(Ua(b,d)):c.add(d);else(d=e.getNamedItem(d))&&(y?d.nodeValue&&c.add(Ua(b,d)):c.add(d));return c},!1),$b=N("child",function(a,b,c,d,e){return(y?rb:sb).call(null,a,b,aa(c)?c:null,aa(d)?d:null,e||new D)},!1,!0);N("descendant",lb,!1,!0);
|
|
68
|
+
var ac=N("descendant-or-self",function(a,b,c,d){var e=new D;kb(b,c,d)&&a.a(b)&&e.add(b);return lb(a,b,c,d,e)},!1,!0),Wb=N("following",function(a,b,c,d){var e=new D;do for(var f=b;f=f.nextSibling;)kb(f,c,d)&&a.a(f)&&e.add(f),e=lb(a,f,c,d,e);while(b=b.parentNode);return e},!1,!0);N("following-sibling",function(a,b){for(var c=new D;b=b.nextSibling;)a.a(b)&&c.add(b);return c},!1);N("namespace",function(){return new D},!1);
|
|
69
|
+
var dc=N("parent",function(a,b){var c=new D;if(9==b.nodeType)return c;if(2==b.nodeType)return c.add(b.ownerElement),c;b=b.parentNode;a.a(b)&&c.add(b);return c},!1),Xb=N("preceding",function(a,b,c,d){var e=new D,f=[];do f.unshift(b);while(b=b.parentNode);for(var g=1,h=f.length;g<h;g++){var n=[];for(b=f[g];b=b.previousSibling;)n.unshift(b);for(var t=0,p=n.length;t<p;t++)b=n[t],kb(b,c,d)&&a.a(b)&&e.add(b),e=lb(a,b,c,d,e)}return e},!0,!0);
|
|
70
|
+
N("preceding-sibling",function(a,b){for(var c=new D;b=b.previousSibling;)a.a(b)&&vb(c,b);return c},!0);var ec=N("self",function(a,b){var c=new D;a.a(b)&&c.add(b);return c},!1);function fc(a){H.call(this,1);this.c=a;this.g=a.g;this.b=a.b}l(fc,H);fc.prototype.a=function(a){return-J(this.c,a)};fc.prototype.toString=function(){return"Unary Expression: -"+I(this.c)};function gc(a){H.call(this,4);this.c=a;Ab(this,ra(this.c,function(b){return b.g}));Bb(this,ra(this.c,function(b){return b.b}))}l(gc,H);gc.prototype.a=function(a){var b=new D;q(this.c,function(c){c=c.a(a);if(!(c instanceof D))throw Error("Path expression must evaluate to NodeSet.");b=ub(b,c)});return b};gc.prototype.toString=function(){return qa(this.c,function(a,b){return a+I(b)},"Union Expression:")};function hc(a,b){this.a=a;this.b=b}function ic(a){for(var b,c=[];;){O(a,"Missing right hand side of binary expression.");b=jc(a);var d=A(a.a);if(!d)break;var e=(d=Ib[d]||null)&&d.M;if(!e){a.a.a--;break}for(;c.length&&e<=c[c.length-1].M;)b=new Db(c.pop(),c.pop(),b);c.push(b,d)}for(;c.length;)b=new Db(c.pop(),c.pop(),b);return b}function O(a,b){if(Za(a.a))throw Error(b);}function kc(a,b){a=A(a.a);if(a!=b)throw Error("Bad token, expected: "+b+" got: "+a);}
|
|
71
|
+
function lc(a){a=A(a.a);if(")"!=a)throw Error("Bad token: "+a);}function mc(a){a=A(a.a);if(2>a.length)throw Error("Unclosed literal string");return new Pb(a)}
|
|
72
|
+
function nc(a){var b=[];if(Vb(z(a.a))){var c=A(a.a);var d=z(a.a);if("/"==c&&(Za(a.a)||"."!=d&&".."!=d&&"@"!=d&&"*"!=d&&!/(?![0-9])[\w]/.test(d)))return new Tb;d=new Tb;O(a,"Missing next location step.");c=oc(a,c);b.push(c)}else{a:{c=z(a.a);d=c.charAt(0);switch(d){case "$":throw Error("Variable reference not allowed in HTML XPath");case "(":A(a.a);c=ic(a);O(a,'unclosed "("');kc(a,")");break;case '"':case "'":c=mc(a);break;default:if(isNaN(+c))if(!Ob(c)&&/(?![0-9])[\w]/.test(d)&&"("==z(a.a,1)){c=A(a.a);
|
|
73
|
+
c=Nb[c]||null;A(a.a);for(d=[];")"!=z(a.a);){O(a,"Missing function argument list.");d.push(ic(a));if(","!=z(a.a))break;A(a.a)}O(a,"Unclosed function argument list.");lc(a);c=new Lb(c,d)}else{c=null;break a}else c=new Qb(+A(a.a))}"["==z(a.a)&&(d=new Yb(pc(a)),c=new Jb(c,d))}if(c)if(Vb(z(a.a)))d=c;else return c;else c=oc(a,"/"),d=new Ub,b.push(c)}for(;Vb(z(a.a));)c=A(a.a),O(a,"Missing next location step."),c=oc(a,c),b.push(c);return new Rb(d,b)}
|
|
74
|
+
function oc(a,b){if("/"!=b&&"//"!=b)throw Error('Step op should be "/" or "//"');if("."==z(a.a)){var c=new Zb(ec,new E("node"));A(a.a);return c}if(".."==z(a.a))return c=new Zb(dc,new E("node")),A(a.a),c;if("@"==z(a.a)){var d=Sb;A(a.a);O(a,"Missing attribute name")}else if("::"==z(a.a,1)){if(!/(?![0-9])[\w]/.test(z(a.a).charAt(0)))throw Error("Bad token: "+A(a.a));var e=A(a.a);d=cc[e]||null;if(!d)throw Error("No axis with name: "+e);A(a.a);O(a,"Missing node name")}else d=$b;e=z(a.a);if(/(?![0-9])[\w\*]/.test(e.charAt(0)))if("("==
|
|
75
|
+
z(a.a,1)){if(!Ob(e))throw Error("Invalid node type: "+e);e=A(a.a);if(!Ob(e))throw Error("Invalid type name: "+e);kc(a,"(");O(a,"Bad nodetype");var f=z(a.a).charAt(0),g=null;if('"'==f||"'"==f)g=mc(a);O(a,"Bad nodetype");lc(a);e=new E(e,g)}else if(e=A(a.a),f=e.indexOf(":"),-1==f)e=new ob(e);else{g=e.substring(0,f);if("*"==g)var h="*";else if(h=a.b(g),!h)throw Error("Namespace prefix not declared: "+g);e=e.substr(f+1);e=new ob(e,h)}else throw Error("Bad token: "+A(a.a));a=new Yb(pc(a),d.v);return c||
|
|
76
|
+
new Zb(d,e,a,"//"==b)}function pc(a){for(var b=[];"["==z(a.a);){A(a.a);O(a,"Missing predicate expression.");var c=ic(a);b.push(c);O(a,"Unclosed predicate expression.");kc(a,"]")}return b}function jc(a){if("-"==z(a.a))return A(a.a),new fc(jc(a));var b=nc(a);if("|"!=z(a.a))a=b;else{for(b=[b];"|"==A(a.a);)O(a,"Missing next union location path."),b.push(nc(a));a.a.a--;a=new gc(b)}return a};function qc(a){switch(a.nodeType){case 1:return ka(rc,a);case 9:return qc(a.documentElement);case 11:case 10:case 6:case 12:return sc;default:return a.parentNode?qc(a.parentNode):sc}}function sc(){return null}function rc(a,b){if(a.prefix==b)return a.namespaceURI||"http://www.w3.org/1999/xhtml";var c=a.getAttributeNode("xmlns:"+b);return c&&c.specified?c.value||null:a.parentNode&&9!=a.parentNode.nodeType?rc(a.parentNode,b):null};function vc(a,b){if(!a.length)throw Error("Empty XPath expression.");a=Wa(a);if(Za(a))throw Error("Invalid XPath expression.");b?da(b)||(b=ja(b.lookupNamespaceURI,b)):b=function(){return null};var c=ic(new hc(a,b));if(!Za(a))throw Error("Bad token: "+A(a));this.evaluate=function(d,e){d=c.a(new la(d));return new P(d,e)}}
|
|
77
|
+
function P(a,b){if(0==b)if(a instanceof D)b=4;else if("string"==typeof a)b=2;else if("number"==typeof a)b=1;else if("boolean"==typeof a)b=3;else throw Error("Unexpected evaluation result.");if(2!=b&&1!=b&&3!=b&&!(a instanceof D))throw Error("value could not be converted to the specified type");this.resultType=b;switch(b){case 2:this.stringValue=a instanceof D?xb(a):""+a;break;case 1:this.numberValue=a instanceof D?+xb(a):+a;break;case 3:this.booleanValue=a instanceof D?0<a.m:!!a;break;case 4:case 5:case 6:case 7:var c=
|
|
78
|
+
yb(a);var d=[];for(var e=F(c);e;e=F(c))d.push(e instanceof Ta?e.a:e);this.snapshotLength=a.m;this.invalidIteratorState=!1;break;case 8:case 9:a=wb(a);this.singleNodeValue=a instanceof Ta?a.a:a;break;default:throw Error("Unknown XPathResult type.");}var f=0;this.iterateNext=function(){if(4!=b&&5!=b)throw Error("iterateNext called with wrong result type");return f>=d.length?null:d[f++]};this.snapshotItem=function(g){if(6!=b&&7!=b)throw Error("snapshotItem called with wrong result type");return g>=d.length||
|
|
79
|
+
0>g?null:d[g]}}P.ANY_TYPE=0;P.NUMBER_TYPE=1;P.STRING_TYPE=2;P.BOOLEAN_TYPE=3;P.UNORDERED_NODE_ITERATOR_TYPE=4;P.ORDERED_NODE_ITERATOR_TYPE=5;P.UNORDERED_NODE_SNAPSHOT_TYPE=6;P.ORDERED_NODE_SNAPSHOT_TYPE=7;P.ANY_UNORDERED_NODE_TYPE=8;P.FIRST_ORDERED_NODE_TYPE=9;function wc(a){this.lookupNamespaceURI=qc(a)}
|
|
80
|
+
function xc(a,b){a=a||k;var c=a.Document&&a.Document.prototype||a.document;if(!c.evaluate||b)a.XPathResult=P,c.evaluate=function(d,e,f,g){return(new vc(d,f)).evaluate(e,g)},c.createExpression=function(d,e){return new vc(d,e)},c.createNSResolver=function(d){return new wc(d)}}ba("wgxpath.install",xc);ba("wgxpath.install",xc);var yc=window;function Q(a,b){this.code=a;this.a=S[a]||zc;this.message=b||"";a=this.a.replace(/((?:^|\s+)[a-z])/g,function(c){return c.toUpperCase().replace(/^[\s\xa0]+/g,"")});b=a.length-5;if(0>b||a.indexOf("Error",b)!=b)a+="Error";this.name=a;a=Error(this.message);a.name=this.name;this.stack=a.stack||""}l(Q,Error);var zc="unknown error",S={15:"element not selectable",11:"element not visible"};S[31]=zc;S[30]=zc;S[24]="invalid cookie domain";S[29]="invalid element coordinates";S[12]="invalid element state";
|
|
81
|
+
S[32]="invalid selector";S[51]="invalid selector";S[52]="invalid selector";S[17]="javascript error";S[405]="unsupported operation";S[34]="move target out of bounds";S[27]="no such alert";S[7]="no such element";S[8]="no such frame";S[23]="no such window";S[28]="script timeout";S[33]="session not created";S[10]="stale element reference";S[21]="timeout";S[25]="unable to set cookie";S[26]="unexpected alert open";S[13]=zc;S[9]="unknown command";var Ac={B:function(a){return!(!a.querySelectorAll||!a.querySelector)},o:function(a,b){if(!a)throw new Q(32,"No class name specified");a=xa(a);if(-1!==a.indexOf(" "))throw new Q(32,"Compound class names not permitted");if(Ac.B(b))try{return b.querySelector("."+a.replace(/\./g,"\\."))||null}catch(c){throw new Q(32,"An invalid or illegal class name was specified");}a=jb(bb(b),"*",a,b);return a.length?a[0]:null},j:function(a,b){if(!a)throw new Q(32,"No class name specified");a=xa(a);if(-1!==a.indexOf(" "))throw new Q(32,
|
|
82
|
+
"Compound class names not permitted");if(Ac.B(b))try{return b.querySelectorAll("."+a.replace(/\./g,"\\."))}catch(c){throw new Q(32,"An invalid or illegal class name was specified");}return jb(bb(b),"*",a,b)}};var Bc=Ca(),Cc=Fa()||v("iPod"),Dc=v("iPad"),Ec=v("Android")&&!(Da()||Ca()||v("Opera")||v("Silk")),Fc=Da(),Gc=v("Safari")&&!(Da()||v("Coast")||v("Opera")||v("Edge")||v("Edg/")||v("OPR")||Ca()||v("Silk")||v("Android"))&&!(Fa()||v("iPad")||v("iPod"));function Hc(a){return(a=a.exec(r))?a[1]:""}(function(){if(Bc)return Hc(/Firefox\/([0-9.]+)/);if(w||Ja||Ia)return Na;if(Fc)return Fa()||v("iPad")||v("iPod")?Hc(/CriOS\/([0-9.]+)/):Hc(/Chrome\/([0-9.]+)/);if(Gc&&!(Fa()||v("iPad")||v("iPod")))return Hc(/Version\/([0-9.]+)/);if(Cc||Dc){var a=/Version\/(\S+).*Mobile\/(\S+)/.exec(r);if(a)return a[1]+"."+a[2]}else if(Ec)return(a=Hc(/Android\s+([0-9.]+)/))?a:Hc(/Version\/([0-9.]+)/);return""})();var Ic,Jc,Kc=function(){if(!Ka)return!1;var a=k.Components;if(!a)return!1;try{if(!a.classes)return!1}catch(f){return!1}var b=a.classes;a=a.interfaces;var c=b["@mozilla.org/xpcom/version-comparator;1"].getService(a.nsIVersionComparator);b=b["@mozilla.org/xre/app-info;1"].getService(a.nsIXULAppInfo);var d=b.platformVersion,e=b.version;Ic=function(){return 0<=c.compare(d,"8")};Jc=function(f){c.compare(e,""+f)};return!0}(),Lc=w&&!(8<=Number(x)),Mc=w&&!(9<=Number(x));Ec&&Kc&&Jc(2.3);Ec&&Kc&&Jc(4);
|
|
83
|
+
Gc&&Kc&&Jc(6);var Nc={o:function(a,b){if(!da(b.querySelector)&&w&&(Kc?Ic():w?0<=ya(x,8):Ra(8))&&!ea(b.querySelector))throw Error("CSS selection is not supported");if(!a)throw new Q(32,"No selector specified");a=xa(a);try{var c=b.querySelector(a)}catch(d){throw new Q(32,"An invalid or illegal selector was specified");}return c&&1==c.nodeType?c:null},j:function(a,b){if(!da(b.querySelectorAll)&&w&&(Kc?Ic():w?0<=ya(x,8):Ra(8))&&!ea(b.querySelector))throw Error("CSS selection is not supported");if(!a)throw new Q(32,
|
|
84
|
+
"No selector specified");a=xa(a);try{return b.querySelectorAll(a)}catch(c){throw new Q(32,"An invalid or illegal selector was specified");}}};var Oc={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",
|
|
85
|
+
darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",
|
|
86
|
+
ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",
|
|
87
|
+
lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",
|
|
88
|
+
moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",
|
|
89
|
+
seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};var Pc="backgroundColor borderTopColor borderRightColor borderBottomColor borderLeftColor color outlineColor".split(" "),Qc=/#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/,Rc=/^#(?:[0-9a-f]{3}){1,2}$/i,Sc=/^(?:rgba)?\((\d{1,3}),\s?(\d{1,3}),\s?(\d{1,3}),\s?(0|1|0\.\d*)\)$/i,Tc=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i;function Uc(a,b){b=b.toLowerCase();return"style"==b?Vc(a.style.cssText):Lc&&"value"==b&&T(a,"INPUT")?a.value:Mc&&!0===a[b]?String(a.getAttribute(b)):(a=a.getAttributeNode(b))&&a.specified?a.value:null}var Wc=/[;]+(?=(?:(?:[^"]*"){2})*[^"]*$)(?=(?:(?:[^']*'){2})*[^']*$)(?=(?:[^()]*\([^()]*\))*[^()]*$)/;
|
|
90
|
+
function Vc(a){var b=[];q(a.split(Wc),function(c){var d=c.indexOf(":");0<d&&(c=[c.slice(0,d),c.slice(d+1)],2==c.length&&b.push(c[0].toLowerCase(),":",c[1],";"))});b=b.join("");return b=";"==b.charAt(b.length-1)?b:b+";"}function T(a,b){b&&"string"!==typeof b&&(b=b.toString());return!!a&&1==a.nodeType&&(!b||a.tagName.toUpperCase()==b)};var U={};U.I=function(){var a={ba:"http://www.w3.org/2000/svg"};return function(b){return a[b]||null}}();
|
|
91
|
+
U.s=function(a,b,c){var d=B(a);if(!d.documentElement)return null;(w||Ec)&&xc(d?d.parentWindow||d.defaultView:window);try{var e=d.createNSResolver?d.createNSResolver(d.documentElement):U.I;if(w&&!Ra(7))return d.evaluate.call(d,b,a,e,c,null);if(!w||9<=Number(x)){for(var f={},g=d.getElementsByTagName("*"),h=0;h<g.length;++h){var n=g[h],t=n.namespaceURI;if(t&&!f[t]){var p=n.lookupPrefix(t);if(!p){var G=t.match(".*/(\\w+)/?$");p=G?G[1]:"xhtml"}f[t]=p}}var R={},fa;for(fa in f)R[f[fa]]=fa;e=function(m){return R[m]||
|
|
92
|
+
null}}try{return d.evaluate(b,a,e,c,null)}catch(m){if("TypeError"===m.name)return e=d.createNSResolver?d.createNSResolver(d.documentElement):U.I,d.evaluate(b,a,e,c,null);throw m;}}catch(m){if(!Ka||"NS_ERROR_ILLEGAL_VALUE"!=m.name)throw new Q(32,"Unable to locate an element with the xpath expression "+b+" because of the following error:\n"+m);}};U.J=function(a,b){if(!a||1!=a.nodeType)throw new Q(32,'The result of the xpath expression "'+b+'" is: '+a+". It should be an element.");};
|
|
93
|
+
U.o=function(a,b){var c=function(){var d=U.s(b,a,9);return d?d.singleNodeValue||null:b.selectSingleNode?(d=B(b),d.setProperty&&d.setProperty("SelectionLanguage","XPath"),b.selectSingleNode(a)):null}();null===c||U.J(c,a);return c};
|
|
94
|
+
U.j=function(a,b){var c=function(){var d=U.s(b,a,7);if(d){for(var e=d.snapshotLength,f=[],g=0;g<e;++g)f.push(d.snapshotItem(g));return f}return b.selectNodes?(d=B(b),d.setProperty&&d.setProperty("SelectionLanguage","XPath"),b.selectNodes(a)):[]}();q(c,function(d){U.J(d,a)});return c};function Xc(a,b,c,d){this.c=a;this.a=b;this.b=c;this.f=d}Xc.prototype.ceil=function(){this.c=Math.ceil(this.c);this.a=Math.ceil(this.a);this.b=Math.ceil(this.b);this.f=Math.ceil(this.f);return this};Xc.prototype.floor=function(){this.c=Math.floor(this.c);this.a=Math.floor(this.a);this.b=Math.floor(this.b);this.f=Math.floor(this.f);return this};Xc.prototype.round=function(){this.c=Math.round(this.c);this.a=Math.round(this.a);this.b=Math.round(this.b);this.f=Math.round(this.f);return this};function V(a,b,c,d){this.a=a;this.b=b;this.width=c;this.height=d}V.prototype.ceil=function(){this.a=Math.ceil(this.a);this.b=Math.ceil(this.b);this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};V.prototype.floor=function(){this.a=Math.floor(this.a);this.b=Math.floor(this.b);this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};
|
|
95
|
+
V.prototype.round=function(){this.a=Math.round(this.a);this.b=Math.round(this.b);this.width=Math.round(this.width);this.height=Math.round(this.height);return this};var Yc="function"===typeof ShadowRoot;function Zc(a){for(a=a.parentNode;a&&1!=a.nodeType&&9!=a.nodeType&&11!=a.nodeType;)a=a.parentNode;return T(a)?a:null}
|
|
96
|
+
function W(a,b){b=Ea(b);if("float"==b||"cssFloat"==b||"styleFloat"==b)b=Mc?"styleFloat":"cssFloat";a:{var c=b;var d=B(a);if(d.defaultView&&d.defaultView.getComputedStyle&&(d=d.defaultView.getComputedStyle(a,null))){c=d[c]||d.getPropertyValue(c)||"";break a}c=""}a=c||$c(a,b);if(null===a)a=null;else if(0<=na(Pc,b)){b:{var e=a.match(Sc);if(e&&(b=Number(e[1]),c=Number(e[2]),d=Number(e[3]),e=Number(e[4]),0<=b&&255>=b&&0<=c&&255>=c&&0<=d&&255>=d&&0<=e&&1>=e)){b=[b,c,d,e];break b}b=null}if(!b)b:{if(d=a.match(Tc))if(b=
|
|
97
|
+
Number(d[1]),c=Number(d[2]),d=Number(d[3]),0<=b&&255>=b&&0<=c&&255>=c&&0<=d&&255>=d){b=[b,c,d,1];break b}b=null}if(!b)b:{b=a.toLowerCase();c=Oc[b.toLowerCase()];if(!c&&(c="#"==b.charAt(0)?b:"#"+b,4==c.length&&(c=c.replace(Qc,"#$1$1$2$2$3$3")),!Rc.test(c))){b=null;break b}b=[parseInt(c.substr(1,2),16),parseInt(c.substr(3,2),16),parseInt(c.substr(5,2),16),1]}a=b?"rgba("+b.join(", ")+")":a}return a}
|
|
98
|
+
function $c(a,b){var c=a.currentStyle||a.style,d=c[b];void 0===d&&da(c.getPropertyValue)&&(d=c.getPropertyValue(b));return"inherit"!=d?void 0!==d?d:null:(a=Zc(a))?$c(a,b):null}
|
|
99
|
+
function ad(a,b,c){function d(g){var h=bd(g);return 0<h.height&&0<h.width?!0:T(g,"PATH")&&(0<h.height||0<h.width)?(g=W(g,"stroke-width"),!!g&&0<parseInt(g,10)):"hidden"!=W(g,"overflow")&&ra(g.childNodes,function(n){return 3==n.nodeType||T(n)&&d(n)})}function e(g){return cd(g)==X&&sa(g.childNodes,function(h){return!T(h)||e(h)||!d(h)})}if(!T(a))throw Error("Argument to isShown must be of type Element");if(T(a,"BODY"))return!0;if(T(a,"OPTION")||T(a,"OPTGROUP"))return a=ib(a,function(g){return T(g,"SELECT")}),
|
|
100
|
+
!!a&&ad(a,!0,c);var f=dd(a);if(f)return!!f.image&&0<f.rect.width&&0<f.rect.height&&ad(f.image,b,c);if(T(a,"INPUT")&&"hidden"==a.type.toLowerCase()||T(a,"NOSCRIPT"))return!1;f=W(a,"visibility");return"collapse"!=f&&"hidden"!=f&&c(a)&&(b||0!=ed(a))&&d(a)?!e(a):!1}
|
|
101
|
+
function fd(a){function b(c){if(T(c)&&"none"==W(c,"display"))return!1;var d;if((d=c.parentNode)&&d.shadowRoot&&void 0!==c.assignedSlot)d=c.assignedSlot?c.assignedSlot.parentNode:null;else if(c.getDestinationInsertionPoints){var e=c.getDestinationInsertionPoints();0<e.length&&(d=e[e.length-1])}if(Yc&&d instanceof ShadowRoot){if(d.host.shadowRoot!==d)return!1;d=d.host}return!d||9!=d.nodeType&&11!=d.nodeType?d&&T(d,"DETAILS")&&!d.open&&!T(c,"SUMMARY")?!1:!!d&&b(d):!0}return ad(a,!1,b)}var X="hidden";
|
|
102
|
+
function cd(a){function b(m){function u(Fb){if(Fb==g)return!0;var tc=W(Fb,"display");return 0==tc.lastIndexOf("inline",0)||"contents"==tc||"absolute"==uc&&"static"==W(Fb,"position")?!1:!0}var uc=W(m,"position");if("fixed"==uc)return t=!0,m==g?null:g;for(m=Zc(m);m&&!u(m);)m=Zc(m);return m}function c(m){var u=m;if("visible"==n)if(m==g&&h)u=h;else if(m==h)return{x:"visible",y:"visible"};u={x:W(u,"overflow-x"),y:W(u,"overflow-y")};m==g&&(u.x="visible"==u.x?"auto":u.x,u.y="visible"==u.y?"auto":u.y);return u}
|
|
103
|
+
function d(m){if(m==g){var u=(new cb(f)).a;m=u.scrollingElement?u.scrollingElement:La||"CSS1Compat"!=u.compatMode?u.body||u.documentElement:u.documentElement;u=u.parentWindow||u.defaultView;m=w&&Ra("10")&&u.pageYOffset!=m.scrollTop?new $a(m.scrollLeft,m.scrollTop):new $a(u.pageXOffset||m.scrollLeft,u.pageYOffset||m.scrollTop)}else m=new $a(m.scrollLeft,m.scrollTop);return m}var e=gd(a),f=B(a),g=f.documentElement,h=f.body,n=W(g,"overflow"),t;for(a=b(a);a;a=b(a)){var p=c(a);if("visible"!=p.x||"visible"!=
|
|
104
|
+
p.y){var G=bd(a);if(0==G.width||0==G.height)return X;var R=e.a<G.a,fa=e.b<G.b;if(R&&"hidden"==p.x||fa&&"hidden"==p.y)return X;if(R&&"visible"!=p.x||fa&&"visible"!=p.y){R=d(a);fa=e.b<G.b-R.y;if(e.a<G.a-R.x&&"visible"!=p.x||fa&&"visible"!=p.x)return X;e=cd(a);return e==X?X:"scroll"}R=e.f>=G.a+G.width;G=e.c>=G.b+G.height;if(R&&"hidden"==p.x||G&&"hidden"==p.y)return X;if(R&&"visible"!=p.x||G&&"visible"!=p.y){if(t&&(p=d(a),e.f>=g.scrollWidth-p.x||e.a>=g.scrollHeight-p.y))return X;e=cd(a);return e==X?X:
|
|
105
|
+
"scroll"}}}return"none"}
|
|
106
|
+
function bd(a){var b=dd(a);if(b)return b.rect;if(T(a,"HTML"))return a=B(a),a=((a?a.parentWindow||a.defaultView:window)||window).document,a="CSS1Compat"==a.compatMode?a.documentElement:a.body,a=new ab(a.clientWidth,a.clientHeight),new V(0,0,a.width,a.height);try{var c=a.getBoundingClientRect()}catch(d){return new V(0,0,0,0)}b=new V(c.left,c.top,c.right-c.left,c.bottom-c.top);w&&a.ownerDocument.body&&(a=B(a),b.a-=a.documentElement.clientLeft+a.body.clientLeft,b.b-=a.documentElement.clientTop+a.body.clientTop);
|
|
107
|
+
return b}function dd(a){var b=T(a,"MAP");if(!b&&!T(a,"AREA"))return null;var c=b?a:T(a.parentNode,"MAP")?a.parentNode:null,d=null,e=null;c&&c.name&&(d=U.o('/descendant::*[@usemap = "#'+c.name+'"]',B(c)))&&(e=bd(d),b||"default"==a.shape.toLowerCase()||(a=hd(a),b=Math.min(Math.max(a.a,0),e.width),c=Math.min(Math.max(a.b,0),e.height),e=new V(b+e.a,c+e.b,Math.min(a.width,e.width-b),Math.min(a.height,e.height-c))));return{image:d,rect:e||new V(0,0,0,0)}}
|
|
108
|
+
function hd(a){var b=a.shape.toLowerCase();a=a.coords.split(",");if("rect"==b&&4==a.length){b=a[0];var c=a[1];return new V(b,c,a[2]-b,a[3]-c)}if("circle"==b&&3==a.length)return b=a[2],new V(a[0]-b,a[1]-b,2*b,2*b);if("poly"==b&&2<a.length){b=a[0];c=a[1];for(var d=b,e=c,f=2;f+1<a.length;f+=2)b=Math.min(b,a[f]),d=Math.max(d,a[f]),c=Math.min(c,a[f+1]),e=Math.max(e,a[f+1]);return new V(b,c,d-b,e-c)}return new V(0,0,0,0)}function gd(a){a=bd(a);return new Xc(a.b,a.a+a.width,a.b+a.height,a.a)}
|
|
109
|
+
function id(a){return a.replace(/^[^\S\xa0]+|[^\S\xa0]+$/g,"")}function jd(a){var b=[];Yc?kd(a,b):ld(a,b);a=pa(b,id);return id(a.join("\n")).replace(/\xa0/g," ")}
|
|
110
|
+
function md(a,b,c){if(T(a,"BR"))b.push("");else{var d=T(a,"TD"),e=W(a,"display"),f=!d&&!(0<=na(nd,e)),g=void 0!==a.previousElementSibling?a.previousElementSibling:db(a.previousSibling);g=g?W(g,"display"):"";var h=W(a,"float")||W(a,"cssFloat")||W(a,"styleFloat");!f||"run-in"==g&&"none"==h||/^[\s\xa0]*$/.test(b[b.length-1]||"")||b.push("");var n=fd(a),t=null,p=null;n&&(t=W(a,"white-space"),p=W(a,"text-transform"));q(a.childNodes,function(G){c(G,b,n,t,p)});a=b[b.length-1]||"";!d&&"table-cell"!=e||!a||
|
|
111
|
+
wa(a)||(b[b.length-1]+=" ");f&&"run-in"!=e&&!/^[\s\xa0]*$/.test(a)&&b.push("")}}function ld(a,b){md(a,b,function(c,d,e,f,g){3==c.nodeType&&e?od(c,d,f,g):T(c)&&ld(c,d)})}var nd="inline inline-block inline-table none table-cell table-column table-column-group".split(" ");
|
|
112
|
+
function od(a,b,c,d){a=a.nodeValue.replace(/[\u200b\u200e\u200f]/g,"");a=a.replace(/(\r\n|\r|\n)/g,"\n");if("normal"==c||"nowrap"==c)a=a.replace(/\n/g," ");a="pre"==c||"pre-wrap"==c?a.replace(/[ \f\t\v\u2028\u2029]/g,"\u00a0"):a.replace(/[ \f\t\v\u2028\u2029]+/g," ");"capitalize"==d?a=a.replace(/(^|[^\d\p{L}\p{S}])([\p{Ll}|\p{S}])/gu,function(e,f,g){return f+g.toUpperCase()}):"uppercase"==d?a=a.toUpperCase():"lowercase"==d&&(a=a.toLowerCase());c=b.pop()||"";wa(c)&&0==a.lastIndexOf(" ",0)&&(a=a.substr(1));
|
|
113
|
+
b.push(c+a)}function ed(a){if(Mc){if("relative"==W(a,"position"))return 1;a=W(a,"filter");return(a=a.match(/^alpha\(opacity=(\d*)\)/)||a.match(/^progid:DXImageTransform.Microsoft.Alpha\(Opacity=(\d*)\)/))?Number(a[1])/100:1}return pd(a)}function pd(a){var b=1,c=W(a,"opacity");c&&(b=Number(c));(a=Zc(a))&&(b*=pd(a));return b}
|
|
114
|
+
function qd(a,b,c,d,e){if(3==a.nodeType&&c)od(a,b,d,e);else if(T(a))if(T(a,"CONTENT")||T(a,"SLOT")){for(var f=a;f.parentNode;)f=f.parentNode;f instanceof ShadowRoot?(a=T(a,"CONTENT")?a.getDistributedNodes():a.assignedNodes(),q(a,function(g){qd(g,b,c,d,e)})):kd(a,b)}else if(T(a,"SHADOW")){for(f=a;f.parentNode;)f=f.parentNode;if(f instanceof ShadowRoot&&(a=f))for(a=a.olderShadowRoot;a;)q(a.childNodes,function(g){qd(g,b,c,d,e)}),a=a.olderShadowRoot}else kd(a,b)}
|
|
115
|
+
function kd(a,b){a.shadowRoot&&q(a.shadowRoot.childNodes,function(c){qd(c,b,!0,null,null)});md(a,b,function(c,d,e,f,g){var h=null;1==c.nodeType?h=c:3==c.nodeType&&(h=c);null!=h&&(null!=h.assignedSlot||h.getDestinationInsertionPoints&&0<h.getDestinationInsertionPoints().length)||qd(c,d,e,f,g)})};var rd={B:function(a,b){return!(!a.querySelectorAll||!a.querySelector)&&!/^\d.*/.test(b)},o:function(a,b){var c=bb(b),d="string"===typeof a?c.a.getElementById(a):a;return d?Uc(d,"id")==a&&b!=d&&eb(b,d)?d:ta(jb(c,"*"),function(e){return Uc(e,"id")==a&&b!=e&&eb(b,e)}):null},j:function(a,b){if(!a)return[];if(rd.B(b,a))try{return b.querySelectorAll("#"+rd.S(a))}catch(c){return[]}b=jb(bb(b),"*",null,b);return oa(b,function(c){return Uc(c,"id")==a})},S:function(a){return a.replace(/([\s'"\\#.:;,!?+<>=~*^$|%&@`{}\-\/\[\]\(\)])/g,
|
|
116
|
+
"\\$1")}};var Y={},sd={};Y.N=function(a,b,c){try{var d=Nc.j("a",b)}catch(e){d=jb(bb(b),"A",null,b)}return ta(d,function(e){e=jd(e);e=e.replace(/^[\s]+|[\s]+$/g,"");return c&&-1!=e.indexOf(a)||e==a})};Y.K=function(a,b,c){try{var d=Nc.j("a",b)}catch(e){d=jb(bb(b),"A",null,b)}return oa(d,function(e){e=jd(e);e=e.replace(/^[\s]+|[\s]+$/g,"");return c&&-1!=e.indexOf(a)||e==a})};Y.o=function(a,b){return Y.N(a,b,!1)};Y.j=function(a,b){return Y.K(a,b,!1)};sd.o=function(a,b){return Y.N(a,b,!0)};
|
|
117
|
+
sd.j=function(a,b){return Y.K(a,b,!0)};var Z={D:function(a,b){return function(c){var d=Z.H(a);d=bd(d);c=bd(c);return b.call(null,d,c)}},P:function(a){return Z.D(a,function(b,c){return c.b+c.height<b.b})},R:function(a){return Z.D(a,function(b,c){return b.b+b.height<c.b})},U:function(a){return Z.D(a,function(b,c){return c.a+c.width<b.a})},$:function(a){return Z.D(a,function(b,c){return b.a+b.width<c.a})},V:function(a,b){if(b)var c=b;else"number"==typeof a.distance&&(c=a.distance,delete a.distance);c||(c=50);return function(d){var e=Z.H(a);
|
|
118
|
+
if(e===d)return!1;e=bd(e);d=bd(d);var f=d.a+d.width,g=e.b-e.height,h=d.b-d.height;return Math.abs(e.a+e.width-d.a)<=c||Math.abs(f-e.a)<=c?Math.abs(g-d.b)<=c||Math.abs(h-e.b)<=c:!1}},H:function(a){if(ea(a)&&1==a.nodeType)return a;if(da(a))return Z.H(a.call(null));if(ea(a)){var b;a:{if(b=td(a)){var c=ud[b];if(c&&da(c.o)){b=c.o(a[b],yc.document);break a}}throw new Q(61,"Unsupported locator strategy: "+b);}if(!b)throw new Q(7,"No element has been found by "+JSON.stringify(a));return b}throw new Q(61,
|
|
119
|
+
"Selector is of wrong type: "+JSON.stringify(a));}};Z.O={left:Z.U,right:Z.$,above:Z.P,below:Z.R,near:Z.V};Z.T=function(a,b){var c=[];q(a,function(d){d&&sa(b,function(e){var f=e.kind,g=Z.O[f];if(!g)throw new Q(61,"Cannot find filter suitable for "+f);return g.apply(null,e.args)(d)},null)&&c.push(d)},null);return c};Z.o=function(a,b){a=Z.j(a,b);return 0==a.length?null:a[0]};
|
|
120
|
+
Z.j=function(a,b){if(!a.hasOwnProperty("root")||!a.hasOwnProperty("filters"))throw new Q(61,"Locator not suitable for relative locators: "+JSON.stringify(a));var c=a.filters,d=ca(c);if("array"!=d&&("object"!=d||"number"!=typeof c.length))throw new Q(61,"Targets should be an array: "+JSON.stringify(a));var e;T(a.root)?e=[a.root]:e=vd(a.root,b);return 0==e.length?[]:Z.T(e,a.filters)};var wd={o:function(a,b){if(""===a)throw new Q(32,'Unable to locate an element with the tagName ""');return b.getElementsByTagName(a)[0]||null},j:function(a,b){if(""===a)throw new Q(32,'Unable to locate an element with the tagName ""');return b.getElementsByTagName(a)}};var ud={className:Ac,"class name":Ac,css:Nc,"css selector":Nc,relative:Z,id:rd,linkText:Y,"link text":Y,name:{o:function(a,b){b=jb(bb(b),"*",null,b);return ta(b,function(c){return Uc(c,"name")==a})},j:function(a,b){b=jb(bb(b),"*",null,b);return oa(b,function(c){return Uc(c,"name")==a})}},partialLinkText:sd,"partial link text":sd,tagName:wd,"tag name":wd,xpath:U};function td(a){for(var b in a)if(a.hasOwnProperty(b))return b;return null}
|
|
121
|
+
function vd(a,b){var c=td(a);if(c){var d=ud[c];if(d&&da(d.j))return d.j(a[c],b||yc.document)}throw new Q(61,"Unsupported locator strategy: "+c);};ba("_",vd);; return this._.apply(null,arguments);}).apply({navigator:typeof window!='undefined'?window.navigator:null,document:typeof window!='undefined'?window.document:null}, arguments);}
|