move the library to ONF

Change-Id: I383437e2934ce04cc1a7dc332134f7308991776f
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..efac55c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+.idea
+.cache
+*.pyc
+*.log
+*.class
+*.egg-info/
+dist
+build
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..ae2a679
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,5 @@
+[gerrit]
+host=gerrit.opencord.org
+port=29418
+project=grpc-robot.git
+defaultremote=origin
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..46f6500
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,14 @@
+Copyright 2020-present Open Networking Foundation
+Original copyright 2020-present ADTRAN, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
\ No newline at end of file
diff --git a/MAKEDOC b/MAKEDOC
new file mode 100755
index 0000000..8cb87de
--- /dev/null
+++ b/MAKEDOC
@@ -0,0 +1,49 @@
+#!/bin/bash
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+
+for version in $(curl -s https://pypi.org/pypi/device-management-interface/json | jq '.releases | keys' | jq '.[]'); do
+    version=${version//\"/}
+    filename=dmi_${version//\./\_}
+
+    if [ -d ./grpc_robot/services/dmi/"$filename" ]; then
+
+        python3 -m pip install -q device-management-interface=="$version"
+
+        python3 -m robot.libdoc -P . grpc_robot.Dmi docs/"$filename".html
+        python3 -m robot.libdoc -P . grpc_robot.Dmi docs/"$filename".xml
+    fi
+
+done
+
+for version in $(curl -s https://pypi.org/pypi/voltha-protos/json | jq '.releases | keys' | jq '.[]'); do
+    version=${version//\"/}
+    filename=voltha_${version//\./\_}
+
+    if [ -d ./grpc_robot/services/voltha/"$filename" ]; then
+
+        python3 -m pip install -q voltha-protos=="$version"
+
+        python3 -m robot.libdoc -P . grpc_robot.Voltha docs/"$filename".html
+        python3 -m robot.libdoc -P . grpc_robot.Voltha docs/"$filename".xml
+    fi
+
+done
+
+python3 -m robot.libdoc -P . grpc_robot.Collections docs/collections.html
+python3 -m robot.libdoc -P . grpc_robot.Collections docs/collections.xml
+python3 -m robot.libdoc -P . grpc_robot.DmiTools docs/dmi_tools.html
+python3 -m robot.libdoc -P . grpc_robot.DmiTools docs/dmi_tools.xml
+python3 -m robot.libdoc -P . grpc_robot.VolthaTools docs/voltha_tools.html
+python3 -m robot.libdoc -P . grpc_robot.VolthaTools docs/voltha_tools.xml
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..3913ab4
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,4 @@
+include README.md
+include VERSION
+include LICENSE
+recursive-include docs *
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..6c1a420
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,58 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+
+# set default shell
+SHELL = bash -e -o pipefail
+
+ROOT_DIR  := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
+
+# Variables
+VERSION   ?= $(shell cat ./VERSION)
+LINT_ARGS ?= --verbose --configure LineTooLong:130 -e LineTooLong \
+             --configure TooManyTestSteps:60 -e TooManyTestSteps \
+             --configure TooManyTestCases:50 -e TooManyTestCases \
+             --configure TooFewTestSteps:1 \
+             --configure TooFewKeywordSteps:1 \
+             --configure FileTooLong:1500 -e FileTooLong \
+             -e TrailingWhitespace
+
+ROBOT_FILES  := $(shell find . -name test.robot -print)
+DMI_SERVER_FILE ?= $(ROOT_DIR)/tests/servers/dmi/dmi_server.py
+
+# For each makefile target, add ## <description> on the target line and it will be listed by 'make help'
+help: ## Print help for each Makefile target
+	@echo "Usage: make [<target>]"
+	@echo "where available targets are:"
+	@echo
+	@grep '^[[:alpha:]_-]*:.* ##' $(MAKEFILE_LIST) \
+		| sort | awk 'BEGIN {FS=":.* ## "}; {printf "%-25s : %s\n", $$1, $$2};'
+
+vst_venv:
+	virtualenv -p python3 $@ ;\
+	source ./$@/bin/activate ;\
+	python -m pip install -r requirements.txt
+	python $(DMI_SERVER_FILE) & echo $$! > server.PID
+
+test: vst_venv
+	source ./$</bin/activate ; set -u ;\
+    rflint $(LINT_ARGS) $(ROBOT_FILES)
+
+clean:
+	find . -name output.xml -print
+
+clean-all: clean
+	rm -rf vst_venv
+	kill `cat server.PID` && rm server.PID
+
+# end file
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..550faab
--- /dev/null
+++ b/README.md
@@ -0,0 +1,47 @@
+# Robot gRPC package
+
+This package allows sending/receiving messages in a gRPC event stream.
+
+## Supported devices
+This gRPC ROBOT library is intended to supported different Protocol Buffer definitions. Precondition is that python files
+generated from Protocol Buffer files are available in a pip package which must be installed before the library
+is used.
+
+| Supported device  | Pip package                 | Pip package version | Library Name   |
+| ----------------- | --------------------------- | ------------------- | -------------- |
+| dmi               | device-management-interface | 0.9.1               | [grpc_robot.Dmi](docs/dmi_0_9_1.html) |
+|                   |                             | 0.9.2               | [grpc_robot.Dmi](docs/dmi_0_9_2.html) |
+|                   |                             | 0.9.3               | [grpc_robot.Dmi](docs/dmi_0_9_3.html) |
+|                   |                             | 0.9.4               | [grpc_robot.Dmi](docs/dmi_0_9_4.html) |
+|                   |                             | 0.9.5               | [grpc_robot.Dmi](docs/dmi_0_9_5.html) |
+|                   |                             | 0.9.6               | [grpc_robot.Dmi](docs/dmi_0_9_6.html) |
+|                   |                             | 0.9.8               | [grpc_robot.Dmi](docs/dmi_0_9_8.html) |
+|                   |                             | 0.9.9               | [grpc_robot.Dmi](docs/dmi_0_9_9.html) |
+|                   |                             | 0.10.1              | [grpc_robot.Dmi](docs/dmi_0_10_1.html) |
+|                   |                             | 0.10.2              | [grpc_robot.Dmi](docs/dmi_0_10_2.html) |
+|                   |                             | 0.12.0              | [grpc_robot.Dmi](docs/dmi_0_12_0.html) |
+|                   |                             | 1.0.0               | [grpc_robot.Dmi](docs/dmi_1_0_0.html) |
+| voltha            | voltha-protos               | 4.0.13              | [grpc_robot.Voltha](docs/voltha_4_0_13.html) |
+
+## Tools
+The package also offers some keywords for convenience to work with Robot Framework.
+
+List of keywords: 
+ - [grpc_robot.Collections](docs/collections.html)
+ - [grpc_robot.DmiTools](docs/dmi_tools.html)
+ - [grpc_robot.VolthaTools](docs/voltha_tools.html)
+
+The list of keywords may can be extended by request if required.
+
+## Installation
+
+    pip install robot-grpc
+
+## How to use _robot-grpc_ in Robot Framework
+The library has a named parameter _version_ to indicate the ProtoBuf file set to be used.
+
+    Import Library    grpc_robot.Dmi
+    Import Library    grpc_robot.Collections
+    Import Library    grpc_robot.DmiTools
+    Import Library    grpc_robot.VolthaTools
+    
diff --git a/RUNTESTS b/RUNTESTS
new file mode 100755
index 0000000..68a3671
--- /dev/null
+++ b/RUNTESTS
@@ -0,0 +1,29 @@
+#!/bin/bash
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+
+python3 -m pip install device-management-interface
+
+# start the fake device manager and catch its pid for terminating
+cd ./tests/servers/dmi
+python3 dmi_server.py &
+dmi_pid=$!
+
+cd ../../..
+
+# run tests ...
+python3 -m robot -N "test" -d $OUTPUT_DIR --nostatusrc tests/test.robot
+
+# terminate the service
+kill -9 $dmi_pid
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..eafef0d
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+2.9.3
\ No newline at end of file
diff --git a/docs/collections.html b/docs/collections.html
new file mode 100644
index 0000000..c07c796
--- /dev/null
+++ b/docs/collections.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>Tools for collections (list, dict) related functionality.\x3c/p>","generated":"2021-07-14 13:19:24","inits":[],"keywords":[{"args":["input_dict","search_value"],"doc":"<p>Gets the first key from <i>input_dict\x3c/i> which has the value of <i>search_value\x3c/i>.\x3c/p>\n<p>If <i>search_value\x3c/i> is not found in <i>input_dict\x3c/i>, an empty string is returned.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li><i>input_dict\x3c/i>: &lt;dictionary&gt; to be browsed.\x3c/li>\n<li><i>search_value\x3c/i>: &lt;string&gt;, value to be searched for.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: key of dictionary if search value is in input_dict else empty string\x3c/p>","matched":true,"name":"Dict Get Key By Value","shortdoc":"Gets the first key from _input_dict_ which has the value of _search_value_.","tags":[]},{"args":["values_dict","key","strict=False"],"doc":"<p>Returns the value for given <i>key\x3c/i> in <i>values_dict\x3c/i>.\x3c/p>\n<p>If <i>strict\x3c/i> is set to False (default) it will return given <i>key\x3c/i> if its is not in the dictionary. If set to True, an AssertionError is raised.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li><i>key\x3c/i>: &lt;string&gt;, key to be searched in dictionary.\x3c/li>\n<li><i>values_dict\x3c/i>: &lt;dictionary&gt; in which the key is searched.\x3c/li>\n<li><i>strict\x3c/i>: Optional: &lt;boolean&gt; switch to indicate if an exception shall be raised if key is not in values_dict. Default: False\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<ul>\n<li>if key is in values_dict: Value from <i>values_dict\x3c/i> for <i>key\x3c/i>.\x3c/li>\n<li>else: <i>key\x3c/i>.\x3c/li>\n<li>raises AssertionError in case <i>key\x3c/i> is not in <i>values_dict\x3c/i> and <i>strict\x3c/i> is True.\x3c/li>\n\x3c/ul>","matched":true,"name":"Dict Get Value","shortdoc":"Returns the value for given _key_ in _values_dict_.","tags":[]},{"args":["input_list","key_name","value","match=first"],"doc":"<p>Retrieves a dictionary from a list of dictionaries where <i>key_name\x3c/i> has the <i>value, if _match\x3c/i> is \"first\". Else it returns all matching dictionaries.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li><i>input_list\x3c/i>: &lt;list&gt; ; List of dictionaries.\x3c/li>\n<li><i>key_name\x3c/i>: &lt;dictionary&gt; or &lt;list&gt; ; Name of the key to be searched for.\x3c/li>\n<li><i>value\x3c/i>: &lt;string&gt; or &lt;number&gt; ; Any value of key <i>key_name\x3c/i> to be searched for.\x3c/li>\n\x3c/ul>\n<p><b>Example\x3c/b>:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${dict1}\x3c/td>\n<td>Create Dictionary\x3c/td>\n<td>key_key=master1\x3c/td>\n<td>key1=value11\x3c/td>\n<td>key2=value12\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${dict2}\x3c/td>\n<td>Create Dictionary\x3c/td>\n<td>key_key=master2\x3c/td>\n<td>key1=value21\x3c/td>\n<td>key2=value22\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${dict3}\x3c/td>\n<td>Create Dictionary\x3c/td>\n<td>key_key=master3\x3c/td>\n<td>key1=value31\x3c/td>\n<td>key2=value32\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${dict4}\x3c/td>\n<td>Create Dictionary\x3c/td>\n<td>key_key=master4\x3c/td>\n<td>key5=value41\x3c/td>\n<td>key6=value42\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${the_list}\x3c/td>\n<td>Create List\x3c/td>\n<td>${dict1}\x3c/td>\n<td>${dict2}\x3c/td>\n<td>${dict3}\x3c/td>\n<td>${dict4}\x3c/td>\n\x3c/tr>\n<tr>\n<td>${result}\x3c/td>\n<td>List Get Dict By Value\x3c/td>\n<td>${the_list}\x3c/td>\n<td>key_key\x3c/td>\n<td>master4\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Variable ${result} has following structure:\x3c/p>\n<pre>\n${result} = {\n  'key_key': 'master4',\n  'key5': 'value41',\n  'key6': 'value42'\n}\n\x3c/pre>","matched":true,"name":"List Get Dict By Value","shortdoc":"Retrieves a dictionary from a list of dictionaries where _key_name_ has the _value, if _match_ is \"first\". Else it returns all matching dictionaries.","tags":[]},{"args":["snake_str","first_uppercase=False"],"doc":"","matched":true,"name":"To Camel Case","shortdoc":"","tags":[]}],"name":"grpc_robot.Collections","named_args":true,"scope":"TEST","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_10_1.html b/docs/dmi_0_10_1.html
new file mode 100644
index 0000000..b2f0c70
--- /dev/null
+++ b/docs/dmi_0_10_1.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:18:47","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'last_booted': &lt;google.protobuf.Timestamp&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                   1 - VALUE_TYPE_OTHER |\n                   2 - VALUE_TYPE_UNKNOWN |\n                   3 - VALUE_TYPE_VOLTS_AC |\n                   4 - VALUE_TYPE_VOLTS_DC |\n                   5 - VALUE_TYPE_AMPERES |\n                   6 - VALUE_TYPE_WATTS |\n                   7 - VALUE_TYPE_HERTZ |\n                   8 - VALUE_TYPE_CELSIUS |\n                   9 - VALUE_TYPE_PERCENT_RH |\n                  10 - VALUE_TYPE_RPM |\n                  11 - VALUE_TYPE_CMM |\n                  12 - VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                    1 - VALUE_SCALE_YOCTO |\n                    2 - VALUE_SCALE_ZEPTO |\n                    3 - VALUE_SCALE_ATTO |\n                    4 - VALUE_SCALE_FEMTO |\n                    5 - VALUE_SCALE_PICO |\n                    6 - VALUE_SCALE_NANO |\n                    7 - VALUE_SCALE_MICRO |\n                    8 - VALUE_SCALE_MILLI |\n                    9 - VALUE_SCALE_UNITS |\n                   10 - VALUE_SCALE_KILO |\n                   11 - VALUE_SCALE_MEGA |\n                   12 - VALUE_SCALE_GIGA |\n                   13 - VALUE_SCALE_TERA |\n                   14 - VALUE_SCALE_PETA |\n                   15 - VALUE_SCALE_EXA |\n                   16 - VALUE_SCALE_ZETTA |\n                   17 - VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n    '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n      'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                          1 - RJ45 |\n                          2 - FIBER_LC |\n                          3 - FIBER_SC_PC |\n                          4 - FIBER_MPO &gt;\n      'speed': &lt; 0 - SPEED_UNDEFINED |\n                 1 - DYNAMIC |\n                 2 - GIGABIT_1 |\n                 3 - GIGABIT_10 |\n                 4 - GIGABIT_25 |\n                 5 - GIGABIT_40 |\n                 6 - GIGABIT_100 |\n                 7 - GIGABIT_400 |\n                 8 - MEGABIT_2500 |\n                 9 - MEGABIT_1250 &gt;\n      'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                    1 - ETHERNET |\n                    2 - GPON |\n                    3 - XGPON |\n                    4 - XGSPON |\n                    5 - GFAST |\n                    6 - SERIAL |\n                    7 - EPON &gt;\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n      'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                             1 - V48 |\n                             2 - V230 |\n                             3 - V115 &gt;\n    }\n    '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n      'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                        1 - QSFP |\n                        2 - QSFP_PLUS |\n                        3 - QSFP28 |\n                        4 - SFP |\n                        5 - SFP_PLUS |\n                        6 - XFP |\n                        7 - CFP4 |\n                        8 - CFP2 |\n                        9 - CPAK |\n                       10 - X2 |\n                       11 - OTHER |\n                       12 - CFP |\n                       13 - CFP2_ACO |\n                       14 - CFP2_DCO &gt;\n      'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - CPON |\n                      6 - NG_PON2 |\n                      7 - EPON &gt;\n      'max_distance': &lt;uint32&gt;,\n      'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      'rx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'tx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                             1 - VALUE_SCALE_YOCTO |\n                             2 - VALUE_SCALE_ZEPTO |\n                             3 - VALUE_SCALE_ATTO |\n                             4 - VALUE_SCALE_FEMTO |\n                             5 - VALUE_SCALE_PICO |\n                             6 - VALUE_SCALE_NANO |\n                             7 - VALUE_SCALE_MICRO |\n                             8 - VALUE_SCALE_MILLI |\n                             9 - VALUE_SCALE_UNITS |\n                            10 - VALUE_SCALE_KILO |\n                            11 - VALUE_SCALE_MEGA |\n                            12 - VALUE_SCALE_GIGA |\n                            13 - VALUE_SCALE_TERA |\n                            14 - VALUE_SCALE_PETA |\n                            15 - VALUE_SCALE_EXA |\n                            16 - VALUE_SCALE_ZETTA |\n                            17 - VALUE_SCALE_YOTTA &gt;\n    }\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                 1 - VALUE_TYPE_OTHER |\n                 2 - VALUE_TYPE_UNKNOWN |\n                 3 - VALUE_TYPE_VOLTS_AC |\n                 4 - VALUE_TYPE_VOLTS_DC |\n                 5 - VALUE_TYPE_AMPERES |\n                 6 - VALUE_TYPE_WATTS |\n                 7 - VALUE_TYPE_HERTZ |\n                 8 - VALUE_TYPE_CELSIUS |\n                 9 - VALUE_TYPE_PERCENT_RH |\n                10 - VALUE_TYPE_RPM |\n                11 - VALUE_TYPE_CMM |\n                12 - VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                  1 - VALUE_SCALE_YOCTO |\n                  2 - VALUE_SCALE_ZEPTO |\n                  3 - VALUE_SCALE_ATTO |\n                  4 - VALUE_SCALE_FEMTO |\n                  5 - VALUE_SCALE_PICO |\n                  6 - VALUE_SCALE_NANO |\n                  7 - VALUE_SCALE_MICRO |\n                  8 - VALUE_SCALE_MILLI |\n                  9 - VALUE_SCALE_UNITS |\n                 10 - VALUE_SCALE_KILO |\n                 11 - VALUE_SCALE_MEGA |\n                 12 - VALUE_SCALE_GIGA |\n                 13 - VALUE_SCALE_TERA |\n                 14 - VALUE_SCALE_PETA |\n                 15 - VALUE_SCALE_EXA |\n                 16 - VALUE_SCALE_ZETTA |\n                 17 - VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetStartupConfigurationInfo\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StartupConfigInfoRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StartupConfigInfoResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'config_url': &lt;string&gt;,\n  'version': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Startup Configuration Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_10_2.html b/docs/dmi_0_10_2.html
new file mode 100644
index 0000000..927b741
--- /dev/null
+++ b/docs/dmi_0_10_2.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:18:50","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'last_booted': &lt;google.protobuf.Timestamp&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                   1 - VALUE_TYPE_OTHER |\n                   2 - VALUE_TYPE_UNKNOWN |\n                   3 - VALUE_TYPE_VOLTS_AC |\n                   4 - VALUE_TYPE_VOLTS_DC |\n                   5 - VALUE_TYPE_AMPERES |\n                   6 - VALUE_TYPE_WATTS |\n                   7 - VALUE_TYPE_HERTZ |\n                   8 - VALUE_TYPE_CELSIUS |\n                   9 - VALUE_TYPE_PERCENT_RH |\n                  10 - VALUE_TYPE_RPM |\n                  11 - VALUE_TYPE_CMM |\n                  12 - VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                    1 - VALUE_SCALE_YOCTO |\n                    2 - VALUE_SCALE_ZEPTO |\n                    3 - VALUE_SCALE_ATTO |\n                    4 - VALUE_SCALE_FEMTO |\n                    5 - VALUE_SCALE_PICO |\n                    6 - VALUE_SCALE_NANO |\n                    7 - VALUE_SCALE_MICRO |\n                    8 - VALUE_SCALE_MILLI |\n                    9 - VALUE_SCALE_UNITS |\n                   10 - VALUE_SCALE_KILO |\n                   11 - VALUE_SCALE_MEGA |\n                   12 - VALUE_SCALE_GIGA |\n                   13 - VALUE_SCALE_TERA |\n                   14 - VALUE_SCALE_PETA |\n                   15 - VALUE_SCALE_EXA |\n                   16 - VALUE_SCALE_ZETTA |\n                   17 - VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n    '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n      'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                          1 - RJ45 |\n                          2 - FIBER_LC |\n                          3 - FIBER_SC_PC |\n                          4 - FIBER_MPO &gt;\n      'speed': &lt; 0 - SPEED_UNDEFINED |\n                 1 - DYNAMIC |\n                 2 - GIGABIT_1 |\n                 3 - GIGABIT_10 |\n                 4 - GIGABIT_25 |\n                 5 - GIGABIT_40 |\n                 6 - GIGABIT_100 |\n                 7 - GIGABIT_400 |\n                 8 - MEGABIT_2500 |\n                 9 - MEGABIT_1250 &gt;\n      'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                    1 - ETHERNET |\n                    2 - GPON |\n                    3 - XGPON |\n                    4 - XGSPON |\n                    5 - GFAST |\n                    6 - SERIAL |\n                    7 - EPON &gt;\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n      'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                             1 - V48 |\n                             2 - V230 |\n                             3 - V115 &gt;\n    }\n    '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n      'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                        1 - QSFP |\n                        2 - QSFP_PLUS |\n                        3 - QSFP28 |\n                        4 - SFP |\n                        5 - SFP_PLUS |\n                        6 - XFP |\n                        7 - CFP4 |\n                        8 - CFP2 |\n                        9 - CPAK |\n                       10 - X2 |\n                       11 - OTHER |\n                       12 - CFP |\n                       13 - CFP2_ACO |\n                       14 - CFP2_DCO &gt;\n      'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - CPON |\n                      6 - NG_PON2 |\n                      7 - EPON &gt;\n      'max_distance': &lt;uint32&gt;,\n      'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      'rx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'tx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                             1 - VALUE_SCALE_YOCTO |\n                             2 - VALUE_SCALE_ZEPTO |\n                             3 - VALUE_SCALE_ATTO |\n                             4 - VALUE_SCALE_FEMTO |\n                             5 - VALUE_SCALE_PICO |\n                             6 - VALUE_SCALE_NANO |\n                             7 - VALUE_SCALE_MICRO |\n                             8 - VALUE_SCALE_MILLI |\n                             9 - VALUE_SCALE_UNITS |\n                            10 - VALUE_SCALE_KILO |\n                            11 - VALUE_SCALE_MEGA |\n                            12 - VALUE_SCALE_GIGA |\n                            13 - VALUE_SCALE_TERA |\n                            14 - VALUE_SCALE_PETA |\n                            15 - VALUE_SCALE_EXA |\n                            16 - VALUE_SCALE_ZETTA |\n                            17 - VALUE_SCALE_YOTTA &gt;\n    }\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                 1 - VALUE_TYPE_OTHER |\n                 2 - VALUE_TYPE_UNKNOWN |\n                 3 - VALUE_TYPE_VOLTS_AC |\n                 4 - VALUE_TYPE_VOLTS_DC |\n                 5 - VALUE_TYPE_AMPERES |\n                 6 - VALUE_TYPE_WATTS |\n                 7 - VALUE_TYPE_HERTZ |\n                 8 - VALUE_TYPE_CELSIUS |\n                 9 - VALUE_TYPE_PERCENT_RH |\n                10 - VALUE_TYPE_RPM |\n                11 - VALUE_TYPE_CMM |\n                12 - VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                  1 - VALUE_SCALE_YOCTO |\n                  2 - VALUE_SCALE_ZEPTO |\n                  3 - VALUE_SCALE_ATTO |\n                  4 - VALUE_SCALE_FEMTO |\n                  5 - VALUE_SCALE_PICO |\n                  6 - VALUE_SCALE_NANO |\n                  7 - VALUE_SCALE_MICRO |\n                  8 - VALUE_SCALE_MILLI |\n                  9 - VALUE_SCALE_UNITS |\n                 10 - VALUE_SCALE_KILO |\n                 11 - VALUE_SCALE_MEGA |\n                 12 - VALUE_SCALE_GIGA |\n                 13 - VALUE_SCALE_TERA |\n                 14 - VALUE_SCALE_PETA |\n                 15 - VALUE_SCALE_EXA |\n                 16 - VALUE_SCALE_ZETTA |\n                 17 - VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetStartupConfigurationInfo\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StartupConfigInfoRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StartupConfigInfoResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'config_url': &lt;string&gt;,\n  'version': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Startup Configuration Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_12_0.html b/docs/dmi_0_12_0.html
new file mode 100644
index 0000000..9cd948a
--- /dev/null
+++ b/docs/dmi_0_12_0.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:18:52","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE |\n                    13 - VALUE_TYPE_PERCENT |\n                    14 - VALUE_TYPE_METERS |\n                    15 - VALUE_TYPE_BYTES &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO |\n                            5 - RS232 &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON |\n                      8 - BITS &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE |\n                      13 - VALUE_TYPE_PERCENT |\n                      14 - VALUE_TYPE_METERS |\n                      15 - VALUE_TYPE_BYTES &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO |\n                              5 - RS232 &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON |\n                        8 - BITS &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE |\n                      13 - VALUE_TYPE_PERCENT |\n                      14 - VALUE_TYPE_METERS |\n                      15 - VALUE_TYPE_BYTES &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO |\n                              5 - RS232 &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON |\n                        8 - BITS &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'last_booted': &lt;google.protobuf.Timestamp&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE |\n                    13 - VALUE_TYPE_PERCENT |\n                    14 - VALUE_TYPE_METERS |\n                    15 - VALUE_TYPE_BYTES &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO |\n                            5 - RS232 &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON |\n                      8 - BITS &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                   1 - VALUE_TYPE_OTHER |\n                   2 - VALUE_TYPE_UNKNOWN |\n                   3 - VALUE_TYPE_VOLTS_AC |\n                   4 - VALUE_TYPE_VOLTS_DC |\n                   5 - VALUE_TYPE_AMPERES |\n                   6 - VALUE_TYPE_WATTS |\n                   7 - VALUE_TYPE_HERTZ |\n                   8 - VALUE_TYPE_CELSIUS |\n                   9 - VALUE_TYPE_PERCENT_RH |\n                  10 - VALUE_TYPE_RPM |\n                  11 - VALUE_TYPE_CMM |\n                  12 - VALUE_TYPE_TRUTH_VALUE |\n                  13 - VALUE_TYPE_PERCENT |\n                  14 - VALUE_TYPE_METERS |\n                  15 - VALUE_TYPE_BYTES &gt;\n        'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                    1 - VALUE_SCALE_YOCTO |\n                    2 - VALUE_SCALE_ZEPTO |\n                    3 - VALUE_SCALE_ATTO |\n                    4 - VALUE_SCALE_FEMTO |\n                    5 - VALUE_SCALE_PICO |\n                    6 - VALUE_SCALE_NANO |\n                    7 - VALUE_SCALE_MICRO |\n                    8 - VALUE_SCALE_MILLI |\n                    9 - VALUE_SCALE_UNITS |\n                   10 - VALUE_SCALE_KILO |\n                   11 - VALUE_SCALE_MEGA |\n                   12 - VALUE_SCALE_GIGA |\n                   13 - VALUE_SCALE_TERA |\n                   14 - VALUE_SCALE_PETA |\n                   15 - VALUE_SCALE_EXA |\n                   16 - VALUE_SCALE_ZETTA |\n                   17 - VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n    '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n      'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                          1 - RJ45 |\n                          2 - FIBER_LC |\n                          3 - FIBER_SC_PC |\n                          4 - FIBER_MPO |\n                          5 - RS232 &gt;\n      'speed': &lt; 0 - SPEED_UNDEFINED |\n                 1 - DYNAMIC |\n                 2 - GIGABIT_1 |\n                 3 - GIGABIT_10 |\n                 4 - GIGABIT_25 |\n                 5 - GIGABIT_40 |\n                 6 - GIGABIT_100 |\n                 7 - GIGABIT_400 |\n                 8 - MEGABIT_2500 |\n                 9 - MEGABIT_1250 &gt;\n      'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                    1 - ETHERNET |\n                    2 - GPON |\n                    3 - XGPON |\n                    4 - XGSPON |\n                    5 - GFAST |\n                    6 - SERIAL |\n                    7 - EPON |\n                    8 - BITS &gt;\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n      'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                             1 - V48 |\n                             2 - V230 |\n                             3 - V115 &gt;\n    }\n    '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n      'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                        1 - QSFP |\n                        2 - QSFP_PLUS |\n                        3 - QSFP28 |\n                        4 - SFP |\n                        5 - SFP_PLUS |\n                        6 - XFP |\n                        7 - CFP4 |\n                        8 - CFP2 |\n                        9 - CPAK |\n                       10 - X2 |\n                       11 - OTHER |\n                       12 - CFP |\n                       13 - CFP2_ACO |\n                       14 - CFP2_DCO &gt;\n      'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - CPON |\n                      6 - NG_PON2 |\n                      7 - EPON &gt;\n      'max_distance': &lt;uint32&gt;,\n      'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      'rx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'tx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                             1 - VALUE_SCALE_YOCTO |\n                             2 - VALUE_SCALE_ZEPTO |\n                             3 - VALUE_SCALE_ATTO |\n                             4 - VALUE_SCALE_FEMTO |\n                             5 - VALUE_SCALE_PICO |\n                             6 - VALUE_SCALE_NANO |\n                             7 - VALUE_SCALE_MICRO |\n                             8 - VALUE_SCALE_MILLI |\n                             9 - VALUE_SCALE_UNITS |\n                            10 - VALUE_SCALE_KILO |\n                            11 - VALUE_SCALE_MEGA |\n                            12 - VALUE_SCALE_GIGA |\n                            13 - VALUE_SCALE_TERA |\n                            14 - VALUE_SCALE_PETA |\n                            15 - VALUE_SCALE_EXA |\n                            16 - VALUE_SCALE_ZETTA |\n                            17 - VALUE_SCALE_YOTTA &gt;\n    }\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                 1 - VALUE_TYPE_OTHER |\n                 2 - VALUE_TYPE_UNKNOWN |\n                 3 - VALUE_TYPE_VOLTS_AC |\n                 4 - VALUE_TYPE_VOLTS_DC |\n                 5 - VALUE_TYPE_AMPERES |\n                 6 - VALUE_TYPE_WATTS |\n                 7 - VALUE_TYPE_HERTZ |\n                 8 - VALUE_TYPE_CELSIUS |\n                 9 - VALUE_TYPE_PERCENT_RH |\n                10 - VALUE_TYPE_RPM |\n                11 - VALUE_TYPE_CMM |\n                12 - VALUE_TYPE_TRUTH_VALUE |\n                13 - VALUE_TYPE_PERCENT |\n                14 - VALUE_TYPE_METERS |\n                15 - VALUE_TYPE_BYTES &gt;\n      'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                  1 - VALUE_SCALE_YOCTO |\n                  2 - VALUE_SCALE_ZEPTO |\n                  3 - VALUE_SCALE_ATTO |\n                  4 - VALUE_SCALE_FEMTO |\n                  5 - VALUE_SCALE_PICO |\n                  6 - VALUE_SCALE_NANO |\n                  7 - VALUE_SCALE_MICRO |\n                  8 - VALUE_SCALE_MILLI |\n                  9 - VALUE_SCALE_UNITS |\n                 10 - VALUE_SCALE_KILO |\n                 11 - VALUE_SCALE_MEGA |\n                 12 - VALUE_SCALE_GIGA |\n                 13 - VALUE_SCALE_TERA |\n                 14 - VALUE_SCALE_PETA |\n                 15 - VALUE_SCALE_EXA |\n                 16 - VALUE_SCALE_ZETTA |\n                 17 - VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetStartupConfigurationInfo\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StartupConfigInfoRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StartupConfigInfoResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'config_url': &lt;string&gt;,\n  'version': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Startup Configuration Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_9_1.html b/docs/dmi_0_9_1.html
new file mode 100644
index 0000000..1f041e6
--- /dev/null
+++ b/docs/dmi_0_9_1.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:18:55","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt; EVENT_NAME_UNDEFINED | EVENT_TRANSCEIVER_PLUG_OUT | EVENT_TRANSCEIVER_PLUG_IN | EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD | EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD | EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD | EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD | EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD | EVENT_TRANSCEIVER_FAILURE | EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_FAILURE_RECOVERED | EVENT_PSU_PLUG_OUT | EVENT_PSU_PLUG_IN | EVENT_PSU_FAILURE | EVENT_PSU_FAILURE_RECOVERED | EVENT_FAN_FAILURE | EVENT_FAN_PLUG_OUT | EVENT_FAN_PLUG_IN | EVENT_FAN_FAILURE_RECOVERED | EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL | EVENT_CPU_TEMPERATURE_ABOVE_FATAL | EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED | EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED | EVENT_HW_DEVICE_RESET | EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL | EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL | EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED | EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt; EVENT_NAME_UNDEFINED | EVENT_TRANSCEIVER_PLUG_OUT | EVENT_TRANSCEIVER_PLUG_IN | EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD | EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD | EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD | EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD | EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD | EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD | EVENT_TRANSCEIVER_FAILURE | EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED | EVENT_TRANSCEIVER_FAILURE_RECOVERED | EVENT_PSU_PLUG_OUT | EVENT_PSU_PLUG_IN | EVENT_PSU_FAILURE | EVENT_PSU_FAILURE_RECOVERED | EVENT_FAN_FAILURE | EVENT_FAN_PLUG_OUT | EVENT_FAN_PLUG_IN | EVENT_FAN_FAILURE_RECOVERED | EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL | EVENT_CPU_TEMPERATURE_ABOVE_FATAL | EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED | EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED | EVENT_HW_DEVICE_RESET | EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL | EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL | EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED | EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n    'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt; COMPONENT_TYPE_UNDEFINED | COMPONENT_TYPE_UNKNOWN | COMPONENT_TYPE_CHASSIS | COMPONENT_TYPE_BACKPLANE | COMPONENT_TYPE_CONTAINER | COMPONENT_TYPE_POWER_SUPPLY | COMPONENT_TYPE_FAN | COMPONENT_TYPE_SENSOR | COMPONENT_TYPE_MODULE | COMPONENT_TYPE_PORT | COMPONENT_TYPE_CPU | COMPONENT_TYPE_BATTERY | COMPONENT_TYPE_STORAGE | COMPONENT_TYPE_MEMORY | COMPONENT_TYPE_TRANSCEIVER | COMPONENT_TYPE_GPON_TRANSCEIVER | COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; COMP_ADMIN_STATE_UNDEFINED | COMP_ADMIN_STATE_UNKNOWN | COMP_ADMIN_STATE_LOCKED | COMP_ADMIN_STATE_SHUTTING_DOWN | COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; COMP_OPER_STATE_UNDEFINED | COMP_OPER_STATE_UNKNOWN | COMP_OPER_STATE_DISABLED | COMP_OPER_STATE_ENABLED | COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; COMP_USAGE_STATE_UNDEFINED | COMP_USAGE_STATE_UNKNOWN | COMP_USAGE_STATE_IDLE | COMP_USAGE_STATE_ACTIVE | COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; COMP_ALARM_STATE_UNDEFINED | COMP_ALARM_STATE_UNKNOWN | COMP_ALARM_STATE_UNDER_REPAIR | COMP_ALARM_STATE_CRITICAL | COMP_ALARM_STATE_MAJOR | COMP_ALARM_STATE_MINOR | COMP_ALARM_STATE_WARNING | COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; COMP_STANDBY_STATE_UNDEFINED | COMP_STANDBY_STATE_UNKNOWN | COMP_STANDBY_STATE_HOT | COMP_STANDBY_STATE_COLD | COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt; SENSOR_VALUE_TYPE_UNDEFINED | SENSOR_VALUE_TYPE_OTHER | SENSOR_VALUE_TYPE_UNKNOWN | SENSOR_VALUE_TYPE_VOLTS_AC | SENSOR_VALUE_TYPE_VOLTS_DC | SENSOR_VALUE_TYPE_AMPERES | SENSOR_VALUE_TYPE_WATTS | SENSOR_VALUE_TYPE_HERTZ | SENSOR_VALUE_TYPE_CELSIUS | SENSOR_VALUE_TYPE_PERCENT_RH | SENSOR_VALUE_TYPE_RPM | SENSOR_VALUE_TYPE_CMM | SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt; SENSOR_VALUE_SCALE_UNDEFINED | SENSOR_VALUE_SCALE_YOCTO | SENSOR_VALUE_SCALE_ZEPTO | SENSOR_VALUE_SCALE_ATTO | SENSOR_VALUE_SCALE_FEMTO | SENSOR_VALUE_SCALE_PICO | SENSOR_VALUE_SCALE_NANO | SENSOR_VALUE_SCALE_MICRO | SENSOR_VALUE_SCALE_MILLI | SENSOR_VALUE_SCALE_UNITS | SENSOR_VALUE_SCALE_KILO | SENSOR_VALUE_SCALE_MEGA | SENSOR_VALUE_SCALE_GIGA | SENSOR_VALUE_SCALE_TERA | SENSOR_VALUE_SCALE_PETA | SENSOR_VALUE_SCALE_EXA | SENSOR_VALUE_SCALE_ZETTA | SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; SENSOR_STATUS_UNDEFINED | SENSOR_STATUS_OK | SENSOR_STATUS_UNAVAILABLE | SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: Uuid\n  'uuid': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt; COMPONENT_TYPE_UNDEFINED | COMPONENT_TYPE_UNKNOWN | COMPONENT_TYPE_CHASSIS | COMPONENT_TYPE_BACKPLANE | COMPONENT_TYPE_CONTAINER | COMPONENT_TYPE_POWER_SUPPLY | COMPONENT_TYPE_FAN | COMPONENT_TYPE_SENSOR | COMPONENT_TYPE_MODULE | COMPONENT_TYPE_PORT | COMPONENT_TYPE_CPU | COMPONENT_TYPE_BATTERY | COMPONENT_TYPE_STORAGE | COMPONENT_TYPE_MEMORY | COMPONENT_TYPE_TRANSCEIVER | COMPONENT_TYPE_GPON_TRANSCEIVER | COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt; COMPONENT_TYPE_UNDEFINED | COMPONENT_TYPE_UNKNOWN | COMPONENT_TYPE_CHASSIS | COMPONENT_TYPE_BACKPLANE | COMPONENT_TYPE_CONTAINER | COMPONENT_TYPE_POWER_SUPPLY | COMPONENT_TYPE_FAN | COMPONENT_TYPE_SENSOR | COMPONENT_TYPE_MODULE | COMPONENT_TYPE_PORT | COMPONENT_TYPE_CPU | COMPONENT_TYPE_BATTERY | COMPONENT_TYPE_STORAGE | COMPONENT_TYPE_MEMORY | COMPONENT_TYPE_TRANSCEIVER | COMPONENT_TYPE_GPON_TRANSCEIVER | COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; COMP_ADMIN_STATE_UNDEFINED | COMP_ADMIN_STATE_UNKNOWN | COMP_ADMIN_STATE_LOCKED | COMP_ADMIN_STATE_SHUTTING_DOWN | COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; COMP_OPER_STATE_UNDEFINED | COMP_OPER_STATE_UNKNOWN | COMP_OPER_STATE_DISABLED | COMP_OPER_STATE_ENABLED | COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; COMP_USAGE_STATE_UNDEFINED | COMP_USAGE_STATE_UNKNOWN | COMP_USAGE_STATE_IDLE | COMP_USAGE_STATE_ACTIVE | COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; COMP_ALARM_STATE_UNDEFINED | COMP_ALARM_STATE_UNKNOWN | COMP_ALARM_STATE_UNDER_REPAIR | COMP_ALARM_STATE_CRITICAL | COMP_ALARM_STATE_MAJOR | COMP_ALARM_STATE_MINOR | COMP_ALARM_STATE_WARNING | COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; COMP_STANDBY_STATE_UNDEFINED | COMP_STANDBY_STATE_UNKNOWN | COMP_STANDBY_STATE_HOT | COMP_STANDBY_STATE_COLD | COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt; SENSOR_VALUE_TYPE_UNDEFINED | SENSOR_VALUE_TYPE_OTHER | SENSOR_VALUE_TYPE_UNKNOWN | SENSOR_VALUE_TYPE_VOLTS_AC | SENSOR_VALUE_TYPE_VOLTS_DC | SENSOR_VALUE_TYPE_AMPERES | SENSOR_VALUE_TYPE_WATTS | SENSOR_VALUE_TYPE_HERTZ | SENSOR_VALUE_TYPE_CELSIUS | SENSOR_VALUE_TYPE_PERCENT_RH | SENSOR_VALUE_TYPE_RPM | SENSOR_VALUE_TYPE_CMM | SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt; SENSOR_VALUE_SCALE_UNDEFINED | SENSOR_VALUE_SCALE_YOCTO | SENSOR_VALUE_SCALE_ZEPTO | SENSOR_VALUE_SCALE_ATTO | SENSOR_VALUE_SCALE_FEMTO | SENSOR_VALUE_SCALE_PICO | SENSOR_VALUE_SCALE_NANO | SENSOR_VALUE_SCALE_MICRO | SENSOR_VALUE_SCALE_MILLI | SENSOR_VALUE_SCALE_UNITS | SENSOR_VALUE_SCALE_KILO | SENSOR_VALUE_SCALE_MEGA | SENSOR_VALUE_SCALE_GIGA | SENSOR_VALUE_SCALE_TERA | SENSOR_VALUE_SCALE_PETA | SENSOR_VALUE_SCALE_EXA | SENSOR_VALUE_SCALE_ZETTA | SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; SENSOR_STATUS_UNDEFINED | SENSOR_STATUS_OK | SENSOR_STATUS_UNAVAILABLE | SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; COMP_ADMIN_STATE_UNDEFINED | COMP_ADMIN_STATE_UNKNOWN | COMP_ADMIN_STATE_LOCKED | COMP_ADMIN_STATE_SHUTTING_DOWN | COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n    'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt; COMPONENT_TYPE_UNDEFINED | COMPONENT_TYPE_UNKNOWN | COMPONENT_TYPE_CHASSIS | COMPONENT_TYPE_BACKPLANE | COMPONENT_TYPE_CONTAINER | COMPONENT_TYPE_POWER_SUPPLY | COMPONENT_TYPE_FAN | COMPONENT_TYPE_SENSOR | COMPONENT_TYPE_MODULE | COMPONENT_TYPE_PORT | COMPONENT_TYPE_CPU | COMPONENT_TYPE_BATTERY | COMPONENT_TYPE_STORAGE | COMPONENT_TYPE_MEMORY | COMPONENT_TYPE_TRANSCEIVER | COMPONENT_TYPE_GPON_TRANSCEIVER | COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; COMP_ADMIN_STATE_UNDEFINED | COMP_ADMIN_STATE_UNKNOWN | COMP_ADMIN_STATE_LOCKED | COMP_ADMIN_STATE_SHUTTING_DOWN | COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; COMP_OPER_STATE_UNDEFINED | COMP_OPER_STATE_UNKNOWN | COMP_OPER_STATE_DISABLED | COMP_OPER_STATE_ENABLED | COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; COMP_USAGE_STATE_UNDEFINED | COMP_USAGE_STATE_UNKNOWN | COMP_USAGE_STATE_IDLE | COMP_USAGE_STATE_ACTIVE | COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; COMP_ALARM_STATE_UNDEFINED | COMP_ALARM_STATE_UNKNOWN | COMP_ALARM_STATE_UNDER_REPAIR | COMP_ALARM_STATE_CRITICAL | COMP_ALARM_STATE_MAJOR | COMP_ALARM_STATE_MINOR | COMP_ALARM_STATE_WARNING | COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; COMP_STANDBY_STATE_UNDEFINED | COMP_STANDBY_STATE_UNKNOWN | COMP_STANDBY_STATE_HOT | COMP_STANDBY_STATE_COLD | COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt; SENSOR_VALUE_TYPE_UNDEFINED | SENSOR_VALUE_TYPE_OTHER | SENSOR_VALUE_TYPE_UNKNOWN | SENSOR_VALUE_TYPE_VOLTS_AC | SENSOR_VALUE_TYPE_VOLTS_DC | SENSOR_VALUE_TYPE_AMPERES | SENSOR_VALUE_TYPE_WATTS | SENSOR_VALUE_TYPE_HERTZ | SENSOR_VALUE_TYPE_CELSIUS | SENSOR_VALUE_TYPE_PERCENT_RH | SENSOR_VALUE_TYPE_RPM | SENSOR_VALUE_TYPE_CMM | SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt; SENSOR_VALUE_SCALE_UNDEFINED | SENSOR_VALUE_SCALE_YOCTO | SENSOR_VALUE_SCALE_ZEPTO | SENSOR_VALUE_SCALE_ATTO | SENSOR_VALUE_SCALE_FEMTO | SENSOR_VALUE_SCALE_PICO | SENSOR_VALUE_SCALE_NANO | SENSOR_VALUE_SCALE_MICRO | SENSOR_VALUE_SCALE_MILLI | SENSOR_VALUE_SCALE_UNITS | SENSOR_VALUE_SCALE_KILO | SENSOR_VALUE_SCALE_MEGA | SENSOR_VALUE_SCALE_GIGA | SENSOR_VALUE_SCALE_TERA | SENSOR_VALUE_SCALE_PETA | SENSOR_VALUE_SCALE_EXA | SENSOR_VALUE_SCALE_ZETTA | SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; SENSOR_STATUS_UNDEFINED | SENSOR_STATUS_OK | SENSOR_STATUS_UNAVAILABLE | SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt; COMPONENT_TYPE_UNDEFINED | COMPONENT_TYPE_UNKNOWN | COMPONENT_TYPE_CHASSIS | COMPONENT_TYPE_BACKPLANE | COMPONENT_TYPE_CONTAINER | COMPONENT_TYPE_POWER_SUPPLY | COMPONENT_TYPE_FAN | COMPONENT_TYPE_SENSOR | COMPONENT_TYPE_MODULE | COMPONENT_TYPE_PORT | COMPONENT_TYPE_CPU | COMPONENT_TYPE_BATTERY | COMPONENT_TYPE_STORAGE | COMPONENT_TYPE_MEMORY | COMPONENT_TYPE_TRANSCEIVER | COMPONENT_TYPE_GPON_TRANSCEIVER | COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt; COMPONENT_TYPE_UNDEFINED | COMPONENT_TYPE_UNKNOWN | COMPONENT_TYPE_CHASSIS | COMPONENT_TYPE_BACKPLANE | COMPONENT_TYPE_CONTAINER | COMPONENT_TYPE_POWER_SUPPLY | COMPONENT_TYPE_FAN | COMPONENT_TYPE_SENSOR | COMPONENT_TYPE_MODULE | COMPONENT_TYPE_PORT | COMPONENT_TYPE_CPU | COMPONENT_TYPE_BATTERY | COMPONENT_TYPE_STORAGE | COMPONENT_TYPE_MEMORY | COMPONENT_TYPE_TRANSCEIVER | COMPONENT_TYPE_GPON_TRANSCEIVER | COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; COMP_ADMIN_STATE_UNDEFINED | COMP_ADMIN_STATE_UNKNOWN | COMP_ADMIN_STATE_LOCKED | COMP_ADMIN_STATE_SHUTTING_DOWN | COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; COMP_OPER_STATE_UNDEFINED | COMP_OPER_STATE_UNKNOWN | COMP_OPER_STATE_DISABLED | COMP_OPER_STATE_ENABLED | COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; COMP_USAGE_STATE_UNDEFINED | COMP_USAGE_STATE_UNKNOWN | COMP_USAGE_STATE_IDLE | COMP_USAGE_STATE_ACTIVE | COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; COMP_ALARM_STATE_UNDEFINED | COMP_ALARM_STATE_UNKNOWN | COMP_ALARM_STATE_UNDER_REPAIR | COMP_ALARM_STATE_CRITICAL | COMP_ALARM_STATE_MAJOR | COMP_ALARM_STATE_MINOR | COMP_ALARM_STATE_WARNING | COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; COMP_STANDBY_STATE_UNDEFINED | COMP_STANDBY_STATE_UNKNOWN | COMP_STANDBY_STATE_HOT | COMP_STANDBY_STATE_COLD | COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt; SENSOR_VALUE_TYPE_UNDEFINED | SENSOR_VALUE_TYPE_OTHER | SENSOR_VALUE_TYPE_UNKNOWN | SENSOR_VALUE_TYPE_VOLTS_AC | SENSOR_VALUE_TYPE_VOLTS_DC | SENSOR_VALUE_TYPE_AMPERES | SENSOR_VALUE_TYPE_WATTS | SENSOR_VALUE_TYPE_HERTZ | SENSOR_VALUE_TYPE_CELSIUS | SENSOR_VALUE_TYPE_PERCENT_RH | SENSOR_VALUE_TYPE_RPM | SENSOR_VALUE_TYPE_CMM | SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt; SENSOR_VALUE_SCALE_UNDEFINED | SENSOR_VALUE_SCALE_YOCTO | SENSOR_VALUE_SCALE_ZEPTO | SENSOR_VALUE_SCALE_ATTO | SENSOR_VALUE_SCALE_FEMTO | SENSOR_VALUE_SCALE_PICO | SENSOR_VALUE_SCALE_NANO | SENSOR_VALUE_SCALE_MICRO | SENSOR_VALUE_SCALE_MILLI | SENSOR_VALUE_SCALE_UNITS | SENSOR_VALUE_SCALE_KILO | SENSOR_VALUE_SCALE_MEGA | SENSOR_VALUE_SCALE_GIGA | SENSOR_VALUE_SCALE_TERA | SENSOR_VALUE_SCALE_PETA | SENSOR_VALUE_SCALE_EXA | SENSOR_VALUE_SCALE_ZETTA | SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; SENSOR_STATUS_UNDEFINED | SENSOR_STATUS_OK | SENSOR_STATUS_UNAVAILABLE | SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; COMP_ADMIN_STATE_UNDEFINED | COMP_ADMIN_STATE_UNKNOWN | COMP_ADMIN_STATE_LOCKED | COMP_ADMIN_STATE_SHUTTING_DOWN | COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt; COMPONENT_TYPE_UNDEFINED | COMPONENT_TYPE_UNKNOWN | COMPONENT_TYPE_CHASSIS | COMPONENT_TYPE_BACKPLANE | COMPONENT_TYPE_CONTAINER | COMPONENT_TYPE_POWER_SUPPLY | COMPONENT_TYPE_FAN | COMPONENT_TYPE_SENSOR | COMPONENT_TYPE_MODULE | COMPONENT_TYPE_PORT | COMPONENT_TYPE_CPU | COMPONENT_TYPE_BATTERY | COMPONENT_TYPE_STORAGE | COMPONENT_TYPE_MEMORY | COMPONENT_TYPE_TRANSCEIVER | COMPONENT_TYPE_GPON_TRANSCEIVER | COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt; COMPONENT_TYPE_UNDEFINED | COMPONENT_TYPE_UNKNOWN | COMPONENT_TYPE_CHASSIS | COMPONENT_TYPE_BACKPLANE | COMPONENT_TYPE_CONTAINER | COMPONENT_TYPE_POWER_SUPPLY | COMPONENT_TYPE_FAN | COMPONENT_TYPE_SENSOR | COMPONENT_TYPE_MODULE | COMPONENT_TYPE_PORT | COMPONENT_TYPE_CPU | COMPONENT_TYPE_BATTERY | COMPONENT_TYPE_STORAGE | COMPONENT_TYPE_MEMORY | COMPONENT_TYPE_TRANSCEIVER | COMPONENT_TYPE_GPON_TRANSCEIVER | COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; COMP_ADMIN_STATE_UNDEFINED | COMP_ADMIN_STATE_UNKNOWN | COMP_ADMIN_STATE_LOCKED | COMP_ADMIN_STATE_SHUTTING_DOWN | COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; COMP_OPER_STATE_UNDEFINED | COMP_OPER_STATE_UNKNOWN | COMP_OPER_STATE_DISABLED | COMP_OPER_STATE_ENABLED | COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; COMP_USAGE_STATE_UNDEFINED | COMP_USAGE_STATE_UNKNOWN | COMP_USAGE_STATE_IDLE | COMP_USAGE_STATE_ACTIVE | COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; COMP_ALARM_STATE_UNDEFINED | COMP_ALARM_STATE_UNKNOWN | COMP_ALARM_STATE_UNDER_REPAIR | COMP_ALARM_STATE_CRITICAL | COMP_ALARM_STATE_MAJOR | COMP_ALARM_STATE_MINOR | COMP_ALARM_STATE_WARNING | COMP_ALARM_STATE_INTERMEDIATE &gt;\n      'standby_state': &lt; COMP_STANDBY_STATE_UNDEFINED | COMP_STANDBY_STATE_UNKNOWN | COMP_STANDBY_STATE_HOT | COMP_STANDBY_STATE_COLD | COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt; SENSOR_VALUE_TYPE_UNDEFINED | SENSOR_VALUE_TYPE_OTHER | SENSOR_VALUE_TYPE_UNKNOWN | SENSOR_VALUE_TYPE_VOLTS_AC | SENSOR_VALUE_TYPE_VOLTS_DC | SENSOR_VALUE_TYPE_AMPERES | SENSOR_VALUE_TYPE_WATTS | SENSOR_VALUE_TYPE_HERTZ | SENSOR_VALUE_TYPE_CELSIUS | SENSOR_VALUE_TYPE_PERCENT_RH | SENSOR_VALUE_TYPE_RPM | SENSOR_VALUE_TYPE_CMM | SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt; SENSOR_VALUE_SCALE_UNDEFINED | SENSOR_VALUE_SCALE_YOCTO | SENSOR_VALUE_SCALE_ZEPTO | SENSOR_VALUE_SCALE_ATTO | SENSOR_VALUE_SCALE_FEMTO | SENSOR_VALUE_SCALE_PICO | SENSOR_VALUE_SCALE_NANO | SENSOR_VALUE_SCALE_MICRO | SENSOR_VALUE_SCALE_MILLI | SENSOR_VALUE_SCALE_UNITS | SENSOR_VALUE_SCALE_KILO | SENSOR_VALUE_SCALE_MEGA | SENSOR_VALUE_SCALE_GIGA | SENSOR_VALUE_SCALE_TERA | SENSOR_VALUE_SCALE_PETA | SENSOR_VALUE_SCALE_EXA | SENSOR_VALUE_SCALE_ZETTA | SENSOR_VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; SENSOR_STATUS_UNDEFINED | SENSOR_STATUS_OK | SENSOR_STATUS_UNAVAILABLE | SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; COMP_ADMIN_STATE_UNDEFINED | COMP_ADMIN_STATE_UNKNOWN | COMP_ADMIN_STATE_LOCKED | COMP_ADMIN_STATE_SHUTTING_DOWN | COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n    'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt; METRIC_NAME_UNDEFINED | METRIC_FAN_SPEED | METRIC_CPU_TEMP | METRIC_CPU_USAGE_PERCENTAGE | METRIC_TRANSCEIVER_TEMP | METRIC_TRANSCEIVER_VOLTAGE | METRIC_TRANSCEIVER_BIAS | METRIC_TRANSCEIVER_RX_POWER | METRIC_TRANSCEIVER_TX_POWER | METRIC_TRANSCEIVER_WAVELENGTH | METRIC_DISK_TEMP | METRIC_DISK_CAPACITY | METRIC_DISK_USAGE | METRIC_DISK_USAGE_PERCENTAGE | METRIC_DISK_READ_WRITE_PERCENTAGE | METRIC_DISK_FAULTY_CELLS_PERCENTAGE | METRIC_RAM_TEMP | METRIC_RAM_CAPACITY | METRIC_RAM_USAGE | METRIC_RAM_USAGE_PERCENTAGE | METRIC_POWER_MAX | METRIC_POWER_USAGE | METRIC_POWER_USAGE_PERCENTAGE | METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt; METRIC_NAME_UNDEFINED | METRIC_FAN_SPEED | METRIC_CPU_TEMP | METRIC_CPU_USAGE_PERCENTAGE | METRIC_TRANSCEIVER_TEMP | METRIC_TRANSCEIVER_VOLTAGE | METRIC_TRANSCEIVER_BIAS | METRIC_TRANSCEIVER_RX_POWER | METRIC_TRANSCEIVER_TX_POWER | METRIC_TRANSCEIVER_WAVELENGTH | METRIC_DISK_TEMP | METRIC_DISK_CAPACITY | METRIC_DISK_USAGE | METRIC_DISK_USAGE_PERCENTAGE | METRIC_DISK_READ_WRITE_PERCENTAGE | METRIC_DISK_FAULTY_CELLS_PERCENTAGE | METRIC_RAM_TEMP | METRIC_RAM_CAPACITY | METRIC_RAM_USAGE | METRIC_RAM_USAGE_PERCENTAGE | METRIC_POWER_MAX | METRIC_POWER_USAGE | METRIC_POWER_USAGE_PERCENTAGE | METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt; SENSOR_VALUE_TYPE_UNDEFINED | SENSOR_VALUE_TYPE_OTHER | SENSOR_VALUE_TYPE_UNKNOWN | SENSOR_VALUE_TYPE_VOLTS_AC | SENSOR_VALUE_TYPE_VOLTS_DC | SENSOR_VALUE_TYPE_AMPERES | SENSOR_VALUE_TYPE_WATTS | SENSOR_VALUE_TYPE_HERTZ | SENSOR_VALUE_TYPE_CELSIUS | SENSOR_VALUE_TYPE_PERCENT_RH | SENSOR_VALUE_TYPE_RPM | SENSOR_VALUE_TYPE_CMM | SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt; SENSOR_VALUE_SCALE_UNDEFINED | SENSOR_VALUE_SCALE_YOCTO | SENSOR_VALUE_SCALE_ZEPTO | SENSOR_VALUE_SCALE_ATTO | SENSOR_VALUE_SCALE_FEMTO | SENSOR_VALUE_SCALE_PICO | SENSOR_VALUE_SCALE_NANO | SENSOR_VALUE_SCALE_MICRO | SENSOR_VALUE_SCALE_MILLI | SENSOR_VALUE_SCALE_UNITS | SENSOR_VALUE_SCALE_KILO | SENSOR_VALUE_SCALE_MEGA | SENSOR_VALUE_SCALE_GIGA | SENSOR_VALUE_SCALE_TERA | SENSOR_VALUE_SCALE_PETA | SENSOR_VALUE_SCALE_EXA | SENSOR_VALUE_SCALE_ZETTA | SENSOR_VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; SENSOR_STATUS_UNDEFINED | SENSOR_STATUS_OK | SENSOR_STATUS_UNAVAILABLE | SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt; METRIC_NAME_UNDEFINED | METRIC_FAN_SPEED | METRIC_CPU_TEMP | METRIC_CPU_USAGE_PERCENTAGE | METRIC_TRANSCEIVER_TEMP | METRIC_TRANSCEIVER_VOLTAGE | METRIC_TRANSCEIVER_BIAS | METRIC_TRANSCEIVER_RX_POWER | METRIC_TRANSCEIVER_TX_POWER | METRIC_TRANSCEIVER_WAVELENGTH | METRIC_DISK_TEMP | METRIC_DISK_CAPACITY | METRIC_DISK_USAGE | METRIC_DISK_USAGE_PERCENTAGE | METRIC_DISK_READ_WRITE_PERCENTAGE | METRIC_DISK_FAULTY_CELLS_PERCENTAGE | METRIC_RAM_TEMP | METRIC_RAM_CAPACITY | METRIC_RAM_USAGE | METRIC_RAM_USAGE_PERCENTAGE | METRIC_POWER_MAX | METRIC_POWER_USAGE | METRIC_POWER_USAGE_PERCENTAGE | METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt; METRIC_NAME_UNDEFINED | METRIC_FAN_SPEED | METRIC_CPU_TEMP | METRIC_CPU_USAGE_PERCENTAGE | METRIC_TRANSCEIVER_TEMP | METRIC_TRANSCEIVER_VOLTAGE | METRIC_TRANSCEIVER_BIAS | METRIC_TRANSCEIVER_RX_POWER | METRIC_TRANSCEIVER_TX_POWER | METRIC_TRANSCEIVER_WAVELENGTH | METRIC_DISK_TEMP | METRIC_DISK_CAPACITY | METRIC_DISK_USAGE | METRIC_DISK_USAGE_PERCENTAGE | METRIC_DISK_READ_WRITE_PERCENTAGE | METRIC_DISK_FAULTY_CELLS_PERCENTAGE | METRIC_RAM_TEMP | METRIC_RAM_CAPACITY | METRIC_RAM_USAGE | METRIC_RAM_USAGE_PERCENTAGE | METRIC_POWER_MAX | METRIC_POWER_USAGE | METRIC_POWER_USAGE_PERCENTAGE | METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n    'reason': &lt; UNDEFINED_REASON | ERROR_IN_REQUEST | INTERNAL_ERROR | DEVICE_IN_WRONG_STATE | INVALID_IMAGE | WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; UNDEFINED_STATE | COPYING_IMAGE | INSTALLING_IMAGE | COMMITTING_IMAGE | REBOOTING_DEVICE | UPGRADE_COMPLETE | UPGRADE_FAILED | ACTIVATION_COMPLETE | ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n    'reason': &lt; UNDEFINED_REASON | ERROR_IN_REQUEST | INTERNAL_ERROR | DEVICE_IN_WRONG_STATE | INVALID_IMAGE | WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; UNDEFINED_STATE | COPYING_IMAGE | INSTALLING_IMAGE | COMMITTING_IMAGE | REBOOTING_DEVICE | UPGRADE_COMPLETE | UPGRADE_FAILED | ACTIVATION_COMPLETE | ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n  'reason': &lt; UNDEFINED_REASON | UNKNOWN_DEVICE | INTERNAL_ERROR | WRONG_METRIC | WRONG_EVENT | LOGGING_ENDPOINT_ERROR | LOGGING_ENDPOINT_PROTOCOL_ERROR | KAFKA_ENDPOINT_ERROR &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; UNDEFINED_STATUS | OK | ERROR &gt;\n    'reason': &lt; UNDEFINED_REASON | ERROR_IN_REQUEST | INTERNAL_ERROR | DEVICE_IN_WRONG_STATE | INVALID_IMAGE | WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; UNDEFINED_STATE | COPYING_IMAGE | INSTALLING_IMAGE | COMMITTING_IMAGE | REBOOTING_DEVICE | UPGRADE_COMPLETE | UPGRADE_FAILED | ACTIVATION_COMPLETE | ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_9_2.html b/docs/dmi_0_9_2.html
new file mode 100644
index 0000000..c9af988
--- /dev/null
+++ b/docs/dmi_0_9_2.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:18:57","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - WRONG_METRIC |\n                4 - WRONG_EVENT |\n                5 - LOGGING_ENDPOINT_ERROR |\n                6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                7 - KAFKA_ENDPOINT_ERROR &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: Uuid\n  'uuid': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - WRONG_METRIC |\n                4 - WRONG_EVENT |\n                5 - LOGGING_ENDPOINT_ERROR |\n                6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                7 - KAFKA_ENDPOINT_ERROR &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'responses': [    # list of:\n    {    # type: DeviceLogResponse\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'status': &lt; 0 - UNDEFINED_STATUS |\n                  1 - OK_STATUS |\n                  2 - ERROR_STATUS &gt;\n      'reason': &lt; 0 - UNDEFINED_REASON |\n                  1 - UNKNOWN_DEVICE |\n                  2 - INTERNAL_ERROR |\n                  3 - WRONG_METRIC |\n                  4 - WRONG_EVENT |\n                  5 - LOGGING_ENDPOINT_ERROR |\n                  6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                  7 - KAFKA_ENDPOINT_ERROR &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER |\n             15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n             16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                   1 - SENSOR_VALUE_TYPE_OTHER |\n                   2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                   3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                   4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                   5 - SENSOR_VALUE_TYPE_AMPERES |\n                   6 - SENSOR_VALUE_TYPE_WATTS |\n                   7 - SENSOR_VALUE_TYPE_HERTZ |\n                   8 - SENSOR_VALUE_TYPE_CELSIUS |\n                   9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                  10 - SENSOR_VALUE_TYPE_RPM |\n                  11 - SENSOR_VALUE_TYPE_CMM |\n                  12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                    1 - SENSOR_VALUE_SCALE_YOCTO |\n                    2 - SENSOR_VALUE_SCALE_ZEPTO |\n                    3 - SENSOR_VALUE_SCALE_ATTO |\n                    4 - SENSOR_VALUE_SCALE_FEMTO |\n                    5 - SENSOR_VALUE_SCALE_PICO |\n                    6 - SENSOR_VALUE_SCALE_NANO |\n                    7 - SENSOR_VALUE_SCALE_MICRO |\n                    8 - SENSOR_VALUE_SCALE_MILLI |\n                    9 - SENSOR_VALUE_SCALE_UNITS |\n                   10 - SENSOR_VALUE_SCALE_KILO |\n                   11 - SENSOR_VALUE_SCALE_MEGA |\n                   12 - SENSOR_VALUE_SCALE_GIGA |\n                   13 - SENSOR_VALUE_SCALE_TERA |\n                   14 - SENSOR_VALUE_SCALE_PETA |\n                   15 - SENSOR_VALUE_SCALE_EXA |\n                   16 - SENSOR_VALUE_SCALE_ZETTA |\n                   17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - WRONG_METRIC |\n                4 - WRONG_EVENT |\n                5 - LOGGING_ENDPOINT_ERROR |\n                6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                7 - KAFKA_ENDPOINT_ERROR &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                 1 - SENSOR_VALUE_TYPE_OTHER |\n                 2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                 3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                 4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                 5 - SENSOR_VALUE_TYPE_AMPERES |\n                 6 - SENSOR_VALUE_TYPE_WATTS |\n                 7 - SENSOR_VALUE_TYPE_HERTZ |\n                 8 - SENSOR_VALUE_TYPE_CELSIUS |\n                 9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                10 - SENSOR_VALUE_TYPE_RPM |\n                11 - SENSOR_VALUE_TYPE_CMM |\n                12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                  1 - SENSOR_VALUE_SCALE_YOCTO |\n                  2 - SENSOR_VALUE_SCALE_ZEPTO |\n                  3 - SENSOR_VALUE_SCALE_ATTO |\n                  4 - SENSOR_VALUE_SCALE_FEMTO |\n                  5 - SENSOR_VALUE_SCALE_PICO |\n                  6 - SENSOR_VALUE_SCALE_NANO |\n                  7 - SENSOR_VALUE_SCALE_MICRO |\n                  8 - SENSOR_VALUE_SCALE_MILLI |\n                  9 - SENSOR_VALUE_SCALE_UNITS |\n                 10 - SENSOR_VALUE_SCALE_KILO |\n                 11 - SENSOR_VALUE_SCALE_MEGA |\n                 12 - SENSOR_VALUE_SCALE_GIGA |\n                 13 - SENSOR_VALUE_SCALE_TERA |\n                 14 - SENSOR_VALUE_SCALE_PETA |\n                 15 - SENSOR_VALUE_SCALE_EXA |\n                 16 - SENSOR_VALUE_SCALE_ZETTA |\n                 17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_9_3.html b/docs/dmi_0_9_3.html
new file mode 100644
index 0000000..19951ce
--- /dev/null
+++ b/docs/dmi_0_9_3.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:19:00","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - WRONG_METRIC |\n                4 - WRONG_EVENT |\n                5 - LOGGING_ENDPOINT_ERROR |\n                6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                7 - KAFKA_ENDPOINT_ERROR &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: Uuid\n  'uuid': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - WRONG_METRIC |\n                4 - WRONG_EVENT |\n                5 - LOGGING_ENDPOINT_ERROR |\n                6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                7 - KAFKA_ENDPOINT_ERROR &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'responses': [    # list of:\n    {    # type: DeviceLogResponse\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'status': &lt; 0 - UNDEFINED_STATUS |\n                  1 - OK_STATUS |\n                  2 - ERROR_STATUS &gt;\n      'reason': &lt; 0 - UNDEFINED_REASON |\n                  1 - UNKNOWN_DEVICE |\n                  2 - INTERNAL_ERROR |\n                  3 - WRONG_METRIC |\n                  4 - WRONG_EVENT |\n                  5 - LOGGING_ENDPOINT_ERROR |\n                  6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                  7 - KAFKA_ENDPOINT_ERROR &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER |\n             15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n             16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                   1 - SENSOR_VALUE_TYPE_OTHER |\n                   2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                   3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                   4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                   5 - SENSOR_VALUE_TYPE_AMPERES |\n                   6 - SENSOR_VALUE_TYPE_WATTS |\n                   7 - SENSOR_VALUE_TYPE_HERTZ |\n                   8 - SENSOR_VALUE_TYPE_CELSIUS |\n                   9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                  10 - SENSOR_VALUE_TYPE_RPM |\n                  11 - SENSOR_VALUE_TYPE_CMM |\n                  12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                    1 - SENSOR_VALUE_SCALE_YOCTO |\n                    2 - SENSOR_VALUE_SCALE_ZEPTO |\n                    3 - SENSOR_VALUE_SCALE_ATTO |\n                    4 - SENSOR_VALUE_SCALE_FEMTO |\n                    5 - SENSOR_VALUE_SCALE_PICO |\n                    6 - SENSOR_VALUE_SCALE_NANO |\n                    7 - SENSOR_VALUE_SCALE_MICRO |\n                    8 - SENSOR_VALUE_SCALE_MILLI |\n                    9 - SENSOR_VALUE_SCALE_UNITS |\n                   10 - SENSOR_VALUE_SCALE_KILO |\n                   11 - SENSOR_VALUE_SCALE_MEGA |\n                   12 - SENSOR_VALUE_SCALE_GIGA |\n                   13 - SENSOR_VALUE_SCALE_TERA |\n                   14 - SENSOR_VALUE_SCALE_PETA |\n                   15 - SENSOR_VALUE_SCALE_EXA |\n                   16 - SENSOR_VALUE_SCALE_ZETTA |\n                   17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - WRONG_METRIC |\n                4 - WRONG_EVENT |\n                5 - LOGGING_ENDPOINT_ERROR |\n                6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                7 - KAFKA_ENDPOINT_ERROR &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                 1 - SENSOR_VALUE_TYPE_OTHER |\n                 2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                 3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                 4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                 5 - SENSOR_VALUE_TYPE_AMPERES |\n                 6 - SENSOR_VALUE_TYPE_WATTS |\n                 7 - SENSOR_VALUE_TYPE_HERTZ |\n                 8 - SENSOR_VALUE_TYPE_CELSIUS |\n                 9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                10 - SENSOR_VALUE_TYPE_RPM |\n                11 - SENSOR_VALUE_TYPE_CMM |\n                12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                  1 - SENSOR_VALUE_SCALE_YOCTO |\n                  2 - SENSOR_VALUE_SCALE_ZEPTO |\n                  3 - SENSOR_VALUE_SCALE_ATTO |\n                  4 - SENSOR_VALUE_SCALE_FEMTO |\n                  5 - SENSOR_VALUE_SCALE_PICO |\n                  6 - SENSOR_VALUE_SCALE_NANO |\n                  7 - SENSOR_VALUE_SCALE_MICRO |\n                  8 - SENSOR_VALUE_SCALE_MILLI |\n                  9 - SENSOR_VALUE_SCALE_UNITS |\n                 10 - SENSOR_VALUE_SCALE_KILO |\n                 11 - SENSOR_VALUE_SCALE_MEGA |\n                 12 - SENSOR_VALUE_SCALE_GIGA |\n                 13 - SENSOR_VALUE_SCALE_TERA |\n                 14 - SENSOR_VALUE_SCALE_PETA |\n                 15 - SENSOR_VALUE_SCALE_EXA |\n                 16 - SENSOR_VALUE_SCALE_ZETTA |\n                 17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_9_4.html b/docs/dmi_0_9_4.html
new file mode 100644
index 0000000..69b8034
--- /dev/null
+++ b/docs/dmi_0_9_4.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:19:02","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - WRONG_METRIC |\n                4 - WRONG_EVENT |\n                5 - LOGGING_ENDPOINT_ERROR |\n                6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                7 - KAFKA_ENDPOINT_ERROR |\n                8 - UNKNOWN_LOG_ENTITY &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - WRONG_METRIC |\n                4 - WRONG_EVENT |\n                5 - LOGGING_ENDPOINT_ERROR |\n                6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                7 - KAFKA_ENDPOINT_ERROR |\n                8 - UNKNOWN_LOG_ENTITY &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER |\n             15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n             16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                   1 - SENSOR_VALUE_TYPE_OTHER |\n                   2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                   3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                   4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                   5 - SENSOR_VALUE_TYPE_AMPERES |\n                   6 - SENSOR_VALUE_TYPE_WATTS |\n                   7 - SENSOR_VALUE_TYPE_HERTZ |\n                   8 - SENSOR_VALUE_TYPE_CELSIUS |\n                   9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                  10 - SENSOR_VALUE_TYPE_RPM |\n                  11 - SENSOR_VALUE_TYPE_CMM |\n                  12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                    1 - SENSOR_VALUE_SCALE_YOCTO |\n                    2 - SENSOR_VALUE_SCALE_ZEPTO |\n                    3 - SENSOR_VALUE_SCALE_ATTO |\n                    4 - SENSOR_VALUE_SCALE_FEMTO |\n                    5 - SENSOR_VALUE_SCALE_PICO |\n                    6 - SENSOR_VALUE_SCALE_NANO |\n                    7 - SENSOR_VALUE_SCALE_MICRO |\n                    8 - SENSOR_VALUE_SCALE_MILLI |\n                    9 - SENSOR_VALUE_SCALE_UNITS |\n                   10 - SENSOR_VALUE_SCALE_KILO |\n                   11 - SENSOR_VALUE_SCALE_MEGA |\n                   12 - SENSOR_VALUE_SCALE_GIGA |\n                   13 - SENSOR_VALUE_SCALE_TERA |\n                   14 - SENSOR_VALUE_SCALE_PETA |\n                   15 - SENSOR_VALUE_SCALE_EXA |\n                   16 - SENSOR_VALUE_SCALE_ZETTA |\n                   17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - WRONG_METRIC |\n                4 - WRONG_EVENT |\n                5 - LOGGING_ENDPOINT_ERROR |\n                6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                7 - KAFKA_ENDPOINT_ERROR |\n                8 - UNKNOWN_LOG_ENTITY &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                 1 - SENSOR_VALUE_TYPE_OTHER |\n                 2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                 3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                 4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                 5 - SENSOR_VALUE_TYPE_AMPERES |\n                 6 - SENSOR_VALUE_TYPE_WATTS |\n                 7 - SENSOR_VALUE_TYPE_HERTZ |\n                 8 - SENSOR_VALUE_TYPE_CELSIUS |\n                 9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                10 - SENSOR_VALUE_TYPE_RPM |\n                11 - SENSOR_VALUE_TYPE_CMM |\n                12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                  1 - SENSOR_VALUE_SCALE_YOCTO |\n                  2 - SENSOR_VALUE_SCALE_ZEPTO |\n                  3 - SENSOR_VALUE_SCALE_ATTO |\n                  4 - SENSOR_VALUE_SCALE_FEMTO |\n                  5 - SENSOR_VALUE_SCALE_PICO |\n                  6 - SENSOR_VALUE_SCALE_NANO |\n                  7 - SENSOR_VALUE_SCALE_MICRO |\n                  8 - SENSOR_VALUE_SCALE_MILLI |\n                  9 - SENSOR_VALUE_SCALE_UNITS |\n                 10 - SENSOR_VALUE_SCALE_KILO |\n                 11 - SENSOR_VALUE_SCALE_MEGA |\n                 12 - SENSOR_VALUE_SCALE_GIGA |\n                 13 - SENSOR_VALUE_SCALE_TERA |\n                 14 - SENSOR_VALUE_SCALE_PETA |\n                 15 - SENSOR_VALUE_SCALE_EXA |\n                 16 - SENSOR_VALUE_SCALE_ZETTA |\n                 17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - WRONG_METRIC |\n              4 - WRONG_EVENT |\n              5 - LOGGING_ENDPOINT_ERROR |\n              6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n              7 - KAFKA_ENDPOINT_ERROR |\n              8 - UNKNOWN_LOG_ENTITY &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_9_5.html b/docs/dmi_0_9_5.html
new file mode 100644
index 0000000..a524433
--- /dev/null
+++ b/docs/dmi_0_9_5.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:19:05","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt;  0 - UNDEFINED_REASON |\n                 1 - UNKNOWN_DEVICE |\n                 2 - INTERNAL_ERROR |\n                 3 - WRONG_METRIC |\n                 4 - WRONG_EVENT |\n                 5 - LOGGING_ENDPOINT_ERROR |\n                 6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                 7 - KAFKA_ENDPOINT_ERROR |\n                 8 - UNKNOWN_LOG_ENTITY |\n                 9 - ERROR_FETCHING_CONFIG |\n                10 - INVALID_CONFIG &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt;  0 - UNDEFINED_REASON |\n                 1 - UNKNOWN_DEVICE |\n                 2 - INTERNAL_ERROR |\n                 3 - WRONG_METRIC |\n                 4 - WRONG_EVENT |\n                 5 - LOGGING_ENDPOINT_ERROR |\n                 6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                 7 - KAFKA_ENDPOINT_ERROR |\n                 8 - UNKNOWN_LOG_ENTITY |\n                 9 - ERROR_FETCHING_CONFIG |\n                10 - INVALID_CONFIG &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER |\n             15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n             16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INTERMEDIATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                   1 - SENSOR_VALUE_TYPE_OTHER |\n                   2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                   3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                   4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                   5 - SENSOR_VALUE_TYPE_AMPERES |\n                   6 - SENSOR_VALUE_TYPE_WATTS |\n                   7 - SENSOR_VALUE_TYPE_HERTZ |\n                   8 - SENSOR_VALUE_TYPE_CELSIUS |\n                   9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                  10 - SENSOR_VALUE_TYPE_RPM |\n                  11 - SENSOR_VALUE_TYPE_CMM |\n                  12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                    1 - SENSOR_VALUE_SCALE_YOCTO |\n                    2 - SENSOR_VALUE_SCALE_ZEPTO |\n                    3 - SENSOR_VALUE_SCALE_ATTO |\n                    4 - SENSOR_VALUE_SCALE_FEMTO |\n                    5 - SENSOR_VALUE_SCALE_PICO |\n                    6 - SENSOR_VALUE_SCALE_NANO |\n                    7 - SENSOR_VALUE_SCALE_MICRO |\n                    8 - SENSOR_VALUE_SCALE_MILLI |\n                    9 - SENSOR_VALUE_SCALE_UNITS |\n                   10 - SENSOR_VALUE_SCALE_KILO |\n                   11 - SENSOR_VALUE_SCALE_MEGA |\n                   12 - SENSOR_VALUE_SCALE_GIGA |\n                   13 - SENSOR_VALUE_SCALE_TERA |\n                   14 - SENSOR_VALUE_SCALE_PETA |\n                   15 - SENSOR_VALUE_SCALE_EXA |\n                   16 - SENSOR_VALUE_SCALE_ZETTA |\n                   17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt;  0 - UNDEFINED_REASON |\n                 1 - UNKNOWN_DEVICE |\n                 2 - INTERNAL_ERROR |\n                 3 - WRONG_METRIC |\n                 4 - WRONG_EVENT |\n                 5 - LOGGING_ENDPOINT_ERROR |\n                 6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                 7 - KAFKA_ENDPOINT_ERROR |\n                 8 - UNKNOWN_LOG_ENTITY |\n                 9 - ERROR_FETCHING_CONFIG |\n                10 - INVALID_CONFIG &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                 1 - SENSOR_VALUE_TYPE_OTHER |\n                 2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                 3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                 4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                 5 - SENSOR_VALUE_TYPE_AMPERES |\n                 6 - SENSOR_VALUE_TYPE_WATTS |\n                 7 - SENSOR_VALUE_TYPE_HERTZ |\n                 8 - SENSOR_VALUE_TYPE_CELSIUS |\n                 9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                10 - SENSOR_VALUE_TYPE_RPM |\n                11 - SENSOR_VALUE_TYPE_CMM |\n                12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                  1 - SENSOR_VALUE_SCALE_YOCTO |\n                  2 - SENSOR_VALUE_SCALE_ZEPTO |\n                  3 - SENSOR_VALUE_SCALE_ATTO |\n                  4 - SENSOR_VALUE_SCALE_FEMTO |\n                  5 - SENSOR_VALUE_SCALE_PICO |\n                  6 - SENSOR_VALUE_SCALE_NANO |\n                  7 - SENSOR_VALUE_SCALE_MICRO |\n                  8 - SENSOR_VALUE_SCALE_MILLI |\n                  9 - SENSOR_VALUE_SCALE_UNITS |\n                 10 - SENSOR_VALUE_SCALE_KILO |\n                 11 - SENSOR_VALUE_SCALE_MEGA |\n                 12 - SENSOR_VALUE_SCALE_GIGA |\n                 13 - SENSOR_VALUE_SCALE_TERA |\n                 14 - SENSOR_VALUE_SCALE_PETA |\n                 15 - SENSOR_VALUE_SCALE_EXA |\n                 16 - SENSOR_VALUE_SCALE_ZETTA |\n                 17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt;  0 - UNDEFINED_REASON |\n                 1 - UNKNOWN_DEVICE |\n                 2 - INTERNAL_ERROR |\n                 3 - WRONG_METRIC |\n                 4 - WRONG_EVENT |\n                 5 - LOGGING_ENDPOINT_ERROR |\n                 6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                 7 - KAFKA_ENDPOINT_ERROR |\n                 8 - UNKNOWN_LOG_ENTITY |\n                 9 - ERROR_FETCHING_CONFIG |\n                10 - INVALID_CONFIG &gt;\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_9_6.html b/docs/dmi_0_9_6.html
new file mode 100644
index 0000000..4beaa83
--- /dev/null
+++ b/docs/dmi_0_9_6.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:19:08","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt;  0 - UNDEFINED_REASON |\n                 1 - UNKNOWN_DEVICE |\n                 2 - INTERNAL_ERROR |\n                 3 - WRONG_METRIC |\n                 4 - WRONG_EVENT |\n                 5 - LOGGING_ENDPOINT_ERROR |\n                 6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                 7 - KAFKA_ENDPOINT_ERROR |\n                 8 - UNKNOWN_LOG_ENTITY |\n                 9 - ERROR_FETCHING_CONFIG |\n                10 - INVALID_CONFIG &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt;  0 - UNDEFINED_REASON |\n                 1 - UNKNOWN_DEVICE |\n                 2 - INTERNAL_ERROR |\n                 3 - WRONG_METRIC |\n                 4 - WRONG_EVENT |\n                 5 - LOGGING_ENDPOINT_ERROR |\n                 6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                 7 - KAFKA_ENDPOINT_ERROR |\n                 8 - UNKNOWN_LOG_ENTITY |\n                 9 - ERROR_FETCHING_CONFIG |\n                10 - INVALID_CONFIG &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER |\n             15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n             16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                   1 - SENSOR_VALUE_TYPE_OTHER |\n                   2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                   3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                   4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                   5 - SENSOR_VALUE_TYPE_AMPERES |\n                   6 - SENSOR_VALUE_TYPE_WATTS |\n                   7 - SENSOR_VALUE_TYPE_HERTZ |\n                   8 - SENSOR_VALUE_TYPE_CELSIUS |\n                   9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                  10 - SENSOR_VALUE_TYPE_RPM |\n                  11 - SENSOR_VALUE_TYPE_CMM |\n                  12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                    1 - SENSOR_VALUE_SCALE_YOCTO |\n                    2 - SENSOR_VALUE_SCALE_ZEPTO |\n                    3 - SENSOR_VALUE_SCALE_ATTO |\n                    4 - SENSOR_VALUE_SCALE_FEMTO |\n                    5 - SENSOR_VALUE_SCALE_PICO |\n                    6 - SENSOR_VALUE_SCALE_NANO |\n                    7 - SENSOR_VALUE_SCALE_MICRO |\n                    8 - SENSOR_VALUE_SCALE_MILLI |\n                    9 - SENSOR_VALUE_SCALE_UNITS |\n                   10 - SENSOR_VALUE_SCALE_KILO |\n                   11 - SENSOR_VALUE_SCALE_MEGA |\n                   12 - SENSOR_VALUE_SCALE_GIGA |\n                   13 - SENSOR_VALUE_SCALE_TERA |\n                   14 - SENSOR_VALUE_SCALE_PETA |\n                   15 - SENSOR_VALUE_SCALE_EXA |\n                   16 - SENSOR_VALUE_SCALE_ZETTA |\n                   17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt;  0 - UNDEFINED_REASON |\n                 1 - UNKNOWN_DEVICE |\n                 2 - INTERNAL_ERROR |\n                 3 - WRONG_METRIC |\n                 4 - WRONG_EVENT |\n                 5 - LOGGING_ENDPOINT_ERROR |\n                 6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                 7 - KAFKA_ENDPOINT_ERROR |\n                 8 - UNKNOWN_LOG_ENTITY |\n                 9 - ERROR_FETCHING_CONFIG |\n                10 - INVALID_CONFIG &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                 1 - SENSOR_VALUE_TYPE_OTHER |\n                 2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                 3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                 4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                 5 - SENSOR_VALUE_TYPE_AMPERES |\n                 6 - SENSOR_VALUE_TYPE_WATTS |\n                 7 - SENSOR_VALUE_TYPE_HERTZ |\n                 8 - SENSOR_VALUE_TYPE_CELSIUS |\n                 9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                10 - SENSOR_VALUE_TYPE_RPM |\n                11 - SENSOR_VALUE_TYPE_CMM |\n                12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                  1 - SENSOR_VALUE_SCALE_YOCTO |\n                  2 - SENSOR_VALUE_SCALE_ZEPTO |\n                  3 - SENSOR_VALUE_SCALE_ATTO |\n                  4 - SENSOR_VALUE_SCALE_FEMTO |\n                  5 - SENSOR_VALUE_SCALE_PICO |\n                  6 - SENSOR_VALUE_SCALE_NANO |\n                  7 - SENSOR_VALUE_SCALE_MICRO |\n                  8 - SENSOR_VALUE_SCALE_MILLI |\n                  9 - SENSOR_VALUE_SCALE_UNITS |\n                 10 - SENSOR_VALUE_SCALE_KILO |\n                 11 - SENSOR_VALUE_SCALE_MEGA |\n                 12 - SENSOR_VALUE_SCALE_GIGA |\n                 13 - SENSOR_VALUE_SCALE_TERA |\n                 14 - SENSOR_VALUE_SCALE_PETA |\n                 15 - SENSOR_VALUE_SCALE_EXA |\n                 16 - SENSOR_VALUE_SCALE_ZETTA |\n                 17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt;  0 - UNDEFINED_REASON |\n               1 - UNKNOWN_DEVICE |\n               2 - INTERNAL_ERROR |\n               3 - WRONG_METRIC |\n               4 - WRONG_EVENT |\n               5 - LOGGING_ENDPOINT_ERROR |\n               6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n               7 - KAFKA_ENDPOINT_ERROR |\n               8 - UNKNOWN_LOG_ENTITY |\n               9 - ERROR_FETCHING_CONFIG |\n              10 - INVALID_CONFIG &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt;  0 - UNDEFINED_REASON |\n                 1 - UNKNOWN_DEVICE |\n                 2 - INTERNAL_ERROR |\n                 3 - WRONG_METRIC |\n                 4 - WRONG_EVENT |\n                 5 - LOGGING_ENDPOINT_ERROR |\n                 6 - LOGGING_ENDPOINT_PROTOCOL_ERROR |\n                 7 - KAFKA_ENDPOINT_ERROR |\n                 8 - UNKNOWN_LOG_ENTITY |\n                 9 - ERROR_FETCHING_CONFIG |\n                10 - INVALID_CONFIG &gt;\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_9_8.html b/docs/dmi_0_9_8.html
new file mode 100644
index 0000000..37e4883
--- /dev/null
+++ b/docs/dmi_0_9_8.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:19:10","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER |\n             15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n             16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                   1 - SENSOR_VALUE_TYPE_OTHER |\n                   2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                   3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                   4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                   5 - SENSOR_VALUE_TYPE_AMPERES |\n                   6 - SENSOR_VALUE_TYPE_WATTS |\n                   7 - SENSOR_VALUE_TYPE_HERTZ |\n                   8 - SENSOR_VALUE_TYPE_CELSIUS |\n                   9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                  10 - SENSOR_VALUE_TYPE_RPM |\n                  11 - SENSOR_VALUE_TYPE_CMM |\n                  12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                    1 - SENSOR_VALUE_SCALE_YOCTO |\n                    2 - SENSOR_VALUE_SCALE_ZEPTO |\n                    3 - SENSOR_VALUE_SCALE_ATTO |\n                    4 - SENSOR_VALUE_SCALE_FEMTO |\n                    5 - SENSOR_VALUE_SCALE_PICO |\n                    6 - SENSOR_VALUE_SCALE_NANO |\n                    7 - SENSOR_VALUE_SCALE_MICRO |\n                    8 - SENSOR_VALUE_SCALE_MILLI |\n                    9 - SENSOR_VALUE_SCALE_UNITS |\n                   10 - SENSOR_VALUE_SCALE_KILO |\n                   11 - SENSOR_VALUE_SCALE_MEGA |\n                   12 - SENSOR_VALUE_SCALE_GIGA |\n                   13 - SENSOR_VALUE_SCALE_TERA |\n                   14 - SENSOR_VALUE_SCALE_PETA |\n                   15 - SENSOR_VALUE_SCALE_EXA |\n                   16 - SENSOR_VALUE_SCALE_ZETTA |\n                   17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                 1 - SENSOR_VALUE_TYPE_OTHER |\n                 2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                 3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                 4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                 5 - SENSOR_VALUE_TYPE_AMPERES |\n                 6 - SENSOR_VALUE_TYPE_WATTS |\n                 7 - SENSOR_VALUE_TYPE_HERTZ |\n                 8 - SENSOR_VALUE_TYPE_CELSIUS |\n                 9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                10 - SENSOR_VALUE_TYPE_RPM |\n                11 - SENSOR_VALUE_TYPE_CMM |\n                12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                  1 - SENSOR_VALUE_SCALE_YOCTO |\n                  2 - SENSOR_VALUE_SCALE_ZEPTO |\n                  3 - SENSOR_VALUE_SCALE_ATTO |\n                  4 - SENSOR_VALUE_SCALE_FEMTO |\n                  5 - SENSOR_VALUE_SCALE_PICO |\n                  6 - SENSOR_VALUE_SCALE_NANO |\n                  7 - SENSOR_VALUE_SCALE_MICRO |\n                  8 - SENSOR_VALUE_SCALE_MILLI |\n                  9 - SENSOR_VALUE_SCALE_UNITS |\n                 10 - SENSOR_VALUE_SCALE_KILO |\n                 11 - SENSOR_VALUE_SCALE_MEGA |\n                 12 - SENSOR_VALUE_SCALE_GIGA |\n                 13 - SENSOR_VALUE_SCALE_TERA |\n                 14 - SENSOR_VALUE_SCALE_PETA |\n                 15 - SENSOR_VALUE_SCALE_EXA |\n                 16 - SENSOR_VALUE_SCALE_ZETTA |\n                 17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetStartupConfigurationInfo\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StartupConfigInfoRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StartupConfigInfoResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'config_url': &lt;string&gt;,\n  'version': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Startup Configuration Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR &gt;\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_0_9_9.html b/docs/dmi_0_9_9.html
new file mode 100644
index 0000000..c2a6bc3
--- /dev/null
+++ b/docs/dmi_0_9_9.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:19:13","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER |\n                   15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                   16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                       1 - SENSOR_VALUE_TYPE_OTHER |\n                       2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                       3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                       4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                       5 - SENSOR_VALUE_TYPE_AMPERES |\n                       6 - SENSOR_VALUE_TYPE_WATTS |\n                       7 - SENSOR_VALUE_TYPE_HERTZ |\n                       8 - SENSOR_VALUE_TYPE_CELSIUS |\n                       9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                      10 - SENSOR_VALUE_TYPE_RPM |\n                      11 - SENSOR_VALUE_TYPE_CMM |\n                      12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                        1 - SENSOR_VALUE_SCALE_YOCTO |\n                        2 - SENSOR_VALUE_SCALE_ZEPTO |\n                        3 - SENSOR_VALUE_SCALE_ATTO |\n                        4 - SENSOR_VALUE_SCALE_FEMTO |\n                        5 - SENSOR_VALUE_SCALE_PICO |\n                        6 - SENSOR_VALUE_SCALE_NANO |\n                        7 - SENSOR_VALUE_SCALE_MICRO |\n                        8 - SENSOR_VALUE_SCALE_MILLI |\n                        9 - SENSOR_VALUE_SCALE_UNITS |\n                       10 - SENSOR_VALUE_SCALE_KILO |\n                       11 - SENSOR_VALUE_SCALE_MEGA |\n                       12 - SENSOR_VALUE_SCALE_GIGA |\n                       13 - SENSOR_VALUE_SCALE_TERA |\n                       14 - SENSOR_VALUE_SCALE_PETA |\n                       15 - SENSOR_VALUE_SCALE_EXA |\n                       16 - SENSOR_VALUE_SCALE_ZETTA |\n                       17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n      }\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER |\n                 15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n                 16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                     1 - SENSOR_VALUE_TYPE_OTHER |\n                     2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                     3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                     4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                     5 - SENSOR_VALUE_TYPE_AMPERES |\n                     6 - SENSOR_VALUE_TYPE_WATTS |\n                     7 - SENSOR_VALUE_TYPE_HERTZ |\n                     8 - SENSOR_VALUE_TYPE_CELSIUS |\n                     9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                    10 - SENSOR_VALUE_TYPE_RPM |\n                    11 - SENSOR_VALUE_TYPE_CMM |\n                    12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                      1 - SENSOR_VALUE_SCALE_YOCTO |\n                      2 - SENSOR_VALUE_SCALE_ZEPTO |\n                      3 - SENSOR_VALUE_SCALE_ATTO |\n                      4 - SENSOR_VALUE_SCALE_FEMTO |\n                      5 - SENSOR_VALUE_SCALE_PICO |\n                      6 - SENSOR_VALUE_SCALE_NANO |\n                      7 - SENSOR_VALUE_SCALE_MICRO |\n                      8 - SENSOR_VALUE_SCALE_MILLI |\n                      9 - SENSOR_VALUE_SCALE_UNITS |\n                     10 - SENSOR_VALUE_SCALE_KILO |\n                     11 - SENSOR_VALUE_SCALE_MEGA |\n                     12 - SENSOR_VALUE_SCALE_GIGA |\n                     13 - SENSOR_VALUE_SCALE_TERA |\n                     14 - SENSOR_VALUE_SCALE_PETA |\n                     15 - SENSOR_VALUE_SCALE_EXA |\n                     16 - SENSOR_VALUE_SCALE_ZETTA |\n                     17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER |\n             15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n             16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER |\n               15 - COMPONENT_TYPE_GPON_TRANSCEIVER |\n               16 - COMPONENT_TYPE_XGS_PON_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                   1 - SENSOR_VALUE_TYPE_OTHER |\n                   2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                   3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                   4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                   5 - SENSOR_VALUE_TYPE_AMPERES |\n                   6 - SENSOR_VALUE_TYPE_WATTS |\n                   7 - SENSOR_VALUE_TYPE_HERTZ |\n                   8 - SENSOR_VALUE_TYPE_CELSIUS |\n                   9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                  10 - SENSOR_VALUE_TYPE_RPM |\n                  11 - SENSOR_VALUE_TYPE_CMM |\n                  12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                    1 - SENSOR_VALUE_SCALE_YOCTO |\n                    2 - SENSOR_VALUE_SCALE_ZEPTO |\n                    3 - SENSOR_VALUE_SCALE_ATTO |\n                    4 - SENSOR_VALUE_SCALE_FEMTO |\n                    5 - SENSOR_VALUE_SCALE_PICO |\n                    6 - SENSOR_VALUE_SCALE_NANO |\n                    7 - SENSOR_VALUE_SCALE_MICRO |\n                    8 - SENSOR_VALUE_SCALE_MILLI |\n                    9 - SENSOR_VALUE_SCALE_UNITS |\n                   10 - SENSOR_VALUE_SCALE_KILO |\n                   11 - SENSOR_VALUE_SCALE_MEGA |\n                   12 - SENSOR_VALUE_SCALE_GIGA |\n                   13 - SENSOR_VALUE_SCALE_TERA |\n                   14 - SENSOR_VALUE_SCALE_PETA |\n                   15 - SENSOR_VALUE_SCALE_EXA |\n                   16 - SENSOR_VALUE_SCALE_ZETTA |\n                   17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - SENSOR_VALUE_TYPE_UNDEFINED |\n                 1 - SENSOR_VALUE_TYPE_OTHER |\n                 2 - SENSOR_VALUE_TYPE_UNKNOWN |\n                 3 - SENSOR_VALUE_TYPE_VOLTS_AC |\n                 4 - SENSOR_VALUE_TYPE_VOLTS_DC |\n                 5 - SENSOR_VALUE_TYPE_AMPERES |\n                 6 - SENSOR_VALUE_TYPE_WATTS |\n                 7 - SENSOR_VALUE_TYPE_HERTZ |\n                 8 - SENSOR_VALUE_TYPE_CELSIUS |\n                 9 - SENSOR_VALUE_TYPE_PERCENT_RH |\n                10 - SENSOR_VALUE_TYPE_RPM |\n                11 - SENSOR_VALUE_TYPE_CMM |\n                12 - SENSOR_VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - SENSOR_VALUE_SCALE_UNDEFINED |\n                  1 - SENSOR_VALUE_SCALE_YOCTO |\n                  2 - SENSOR_VALUE_SCALE_ZEPTO |\n                  3 - SENSOR_VALUE_SCALE_ATTO |\n                  4 - SENSOR_VALUE_SCALE_FEMTO |\n                  5 - SENSOR_VALUE_SCALE_PICO |\n                  6 - SENSOR_VALUE_SCALE_NANO |\n                  7 - SENSOR_VALUE_SCALE_MICRO |\n                  8 - SENSOR_VALUE_SCALE_MILLI |\n                  9 - SENSOR_VALUE_SCALE_UNITS |\n                 10 - SENSOR_VALUE_SCALE_KILO |\n                 11 - SENSOR_VALUE_SCALE_MEGA |\n                 12 - SENSOR_VALUE_SCALE_GIGA |\n                 13 - SENSOR_VALUE_SCALE_TERA |\n                 14 - SENSOR_VALUE_SCALE_PETA |\n                 15 - SENSOR_VALUE_SCALE_EXA |\n                 16 - SENSOR_VALUE_SCALE_ZETTA |\n                 17 - SENSOR_VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetStartupConfigurationInfo\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StartupConfigInfoRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StartupConfigInfoResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR &gt;\n  'config_url': &lt;string&gt;,\n  'version': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Startup Configuration Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR &gt;\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_1_0_0.html b/docs/dmi_1_0_0.html
new file mode 100644
index 0000000..604c7cd
--- /dev/null
+++ b/docs/dmi_1_0_0.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:19:16","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      505 - EVENT_HW_DEVICE_REBOOT &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>StreamEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: Event\n    'event_metadata': {    # type: EventMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                  100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                  101 - EVENT_TRANSCEIVER_PLUG_IN |\n                  102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                  103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                  104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                  105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                  106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                  107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                  108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                  109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                  110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                  111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                  112 - EVENT_TRANSCEIVER_FAILURE |\n                  113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                  114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                  115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                  116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                  117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                  118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                  119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                  120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                  121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                  122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                  123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                  200 - EVENT_PSU_PLUG_OUT |\n                  201 - EVENT_PSU_PLUG_IN |\n                  202 - EVENT_PSU_FAILURE |\n                  203 - EVENT_PSU_FAILURE_RECOVERED |\n                  300 - EVENT_FAN_FAILURE |\n                  301 - EVENT_FAN_PLUG_OUT |\n                  302 - EVENT_FAN_PLUG_IN |\n                  303 - EVENT_FAN_FAILURE_RECOVERED |\n                  400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                  401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                  402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                  403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                  500 - EVENT_HW_DEVICE_RESET |\n                  501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                  502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                  503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                  504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                  505 - EVENT_HW_DEVICE_REBOOT &gt;\n    'raised_ts': &lt;google.protobuf.Timestamp&gt;,\n    'threshold_info': {    # type: ThresholdInformation\n      'observed_value': {    # type: ValueType\n        '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n        '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n        '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n      }\n      'thresholds': {    # type: Thresholds\n        '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n          'high': {    # type: ValueType\n            '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n            '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n            '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n          }\n          'low': {    # type: ValueType\n            '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n            '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n            '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n          }\n        }\n        '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n          'high': {    # type: ValueType\n            '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n            '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n            '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n          }\n          'low': {    # type: ValueType\n            '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n            '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n            '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n          }\n        }\n      }\n    }\n    'add_info': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Stream Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      505 - EVENT_HW_DEVICE_REBOOT &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE |\n                    13 - VALUE_TYPE_PERCENT |\n                    14 - VALUE_TYPE_METERS |\n                    15 - VALUE_TYPE_BYTES &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO |\n                            5 - RS232 &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON |\n                      8 - BITS &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'devices': [    # list of:\n    {    # type: ManagedDeviceInfo\n      'info': {    # type: ModifiableComponent\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'parent': {    # type: Component\n          'name': &lt;string&gt;,\n          'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                      1 - COMPONENT_TYPE_UNKNOWN |\n                      2 - COMPONENT_TYPE_CHASSIS |\n                      3 - COMPONENT_TYPE_BACKPLANE |\n                      4 - COMPONENT_TYPE_CONTAINER |\n                      5 - COMPONENT_TYPE_POWER_SUPPLY |\n                      6 - COMPONENT_TYPE_FAN |\n                      7 - COMPONENT_TYPE_SENSOR |\n                      8 - COMPONENT_TYPE_MODULE |\n                      9 - COMPONENT_TYPE_PORT |\n                     10 - COMPONENT_TYPE_CPU |\n                     11 - COMPONENT_TYPE_BATTERY |\n                     12 - COMPONENT_TYPE_STORAGE |\n                     13 - COMPONENT_TYPE_MEMORY |\n                     14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n          'description': &lt;string&gt;,\n          'parent': &lt;string&gt;,\n          'parent_rel_pos': &lt;int32&gt;,\n          'children': [    # list of:\n            &lt; recursive type: Component &gt;\n          ]\n          'hardware_rev': &lt;string&gt;,\n          'firmware_rev': &lt;string&gt;,\n          'software_rev': &lt;string&gt;,\n          'serial_num': &lt;string&gt;,\n          'mfg_name': &lt;string&gt;,\n          'model_name': &lt;string&gt;,\n          'alias': &lt;string&gt;,\n          'asset_id': &lt;string&gt;,\n          'is_fru': &lt;bool&gt;,\n          'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n          'uri': {    # type: Uri\n            'uri': &lt;string&gt;,\n          }\n          'uuid': {    # type: Uuid\n            'uuid': &lt;string&gt;,\n          }\n          'state': {    # type: ComponentState\n            'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n            'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                             1 - COMP_ADMIN_STATE_UNKNOWN |\n                             2 - COMP_ADMIN_STATE_LOCKED |\n                             3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                             4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n            'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                            1 - COMP_OPER_STATE_UNKNOWN |\n                            2 - COMP_OPER_STATE_DISABLED |\n                            3 - COMP_OPER_STATE_ENABLED |\n                            4 - COMP_OPER_STATE_TESTING &gt;\n            'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                             1 - COMP_USAGE_STATE_UNKNOWN |\n                             2 - COMP_USAGE_STATE_IDLE |\n                             3 - COMP_USAGE_STATE_ACTIVE |\n                             4 - COMP_USAGE_STATE_BUSY &gt;\n            'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                             1 - COMP_ALARM_STATE_UNKNOWN |\n                             2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                             3 - COMP_ALARM_STATE_CRITICAL |\n                             4 - COMP_ALARM_STATE_MAJOR |\n                             5 - COMP_ALARM_STATE_MINOR |\n                             6 - COMP_ALARM_STATE_WARNING |\n                             7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n            'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                               1 - COMP_STANDBY_STATE_UNKNOWN |\n                               2 - COMP_STANDBY_STATE_HOT |\n                               3 - COMP_STANDBY_STATE_COLD |\n                               4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n          }\n          'sensor_data': [    # list of:\n            {    # type: ComponentSensorData\n              'value': &lt;int32&gt;,\n              'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                         1 - VALUE_TYPE_OTHER |\n                         2 - VALUE_TYPE_UNKNOWN |\n                         3 - VALUE_TYPE_VOLTS_AC |\n                         4 - VALUE_TYPE_VOLTS_DC |\n                         5 - VALUE_TYPE_AMPERES |\n                         6 - VALUE_TYPE_WATTS |\n                         7 - VALUE_TYPE_HERTZ |\n                         8 - VALUE_TYPE_CELSIUS |\n                         9 - VALUE_TYPE_PERCENT_RH |\n                        10 - VALUE_TYPE_RPM |\n                        11 - VALUE_TYPE_CMM |\n                        12 - VALUE_TYPE_TRUTH_VALUE |\n                        13 - VALUE_TYPE_PERCENT |\n                        14 - VALUE_TYPE_METERS |\n                        15 - VALUE_TYPE_BYTES &gt;\n              'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                          1 - VALUE_SCALE_YOCTO |\n                          2 - VALUE_SCALE_ZEPTO |\n                          3 - VALUE_SCALE_ATTO |\n                          4 - VALUE_SCALE_FEMTO |\n                          5 - VALUE_SCALE_PICO |\n                          6 - VALUE_SCALE_NANO |\n                          7 - VALUE_SCALE_MICRO |\n                          8 - VALUE_SCALE_MILLI |\n                          9 - VALUE_SCALE_UNITS |\n                         10 - VALUE_SCALE_KILO |\n                         11 - VALUE_SCALE_MEGA |\n                         12 - VALUE_SCALE_GIGA |\n                         13 - VALUE_SCALE_TERA |\n                         14 - VALUE_SCALE_PETA |\n                         15 - VALUE_SCALE_EXA |\n                         16 - VALUE_SCALE_ZETTA |\n                         17 - VALUE_SCALE_YOTTA &gt;\n              'precision': &lt;int32&gt;,\n              'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                          1 - SENSOR_STATUS_OK |\n                          2 - SENSOR_STATUS_UNAVAILABLE |\n                          3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n              'units_display': &lt;string&gt;,\n              'timestamp': &lt;google.protobuf.Timestamp&gt;,\n              'value_update_rate': &lt;uint32&gt;,\n              'data_type': &lt;string&gt;,\n            }\n          ]\n          '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n            'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                                1 - RJ45 |\n                                2 - FIBER_LC |\n                                3 - FIBER_SC_PC |\n                                4 - FIBER_MPO |\n                                5 - RS232 &gt;\n            'speed': &lt; 0 - SPEED_UNDEFINED |\n                       1 - DYNAMIC |\n                       2 - GIGABIT_1 |\n                       3 - GIGABIT_10 |\n                       4 - GIGABIT_25 |\n                       5 - GIGABIT_40 |\n                       6 - GIGABIT_100 |\n                       7 - GIGABIT_400 |\n                       8 - MEGABIT_2500 |\n                       9 - MEGABIT_1250 &gt;\n            'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - GFAST |\n                          6 - SERIAL |\n                          7 - EPON |\n                          8 - BITS &gt;\n            'physical_label': &lt;string&gt;,\n          }\n          '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n            'physical_label': &lt;string&gt;,\n          }\n          '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n            'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                   1 - V48 |\n                                   2 - V230 |\n                                   3 - V115 &gt;\n          }\n          '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n            'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                              1 - QSFP |\n                              2 - QSFP_PLUS |\n                              3 - QSFP28 |\n                              4 - SFP |\n                              5 - SFP_PLUS |\n                              6 - XFP |\n                              7 - CFP4 |\n                              8 - CFP2 |\n                              9 - CPAK |\n                             10 - X2 |\n                             11 - OTHER |\n                             12 - CFP |\n                             13 - CFP2_ACO |\n                             14 - CFP2_DCO &gt;\n            'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                            1 - ETHERNET |\n                            2 - GPON |\n                            3 - XGPON |\n                            4 - XGSPON |\n                            5 - CPON |\n                            6 - NG_PON2 |\n                            7 - EPON &gt;\n            'max_distance': &lt;uint32&gt;,\n            'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                     1 - VALUE_SCALE_YOCTO |\n                                     2 - VALUE_SCALE_ZEPTO |\n                                     3 - VALUE_SCALE_ATTO |\n                                     4 - VALUE_SCALE_FEMTO |\n                                     5 - VALUE_SCALE_PICO |\n                                     6 - VALUE_SCALE_NANO |\n                                     7 - VALUE_SCALE_MICRO |\n                                     8 - VALUE_SCALE_MILLI |\n                                     9 - VALUE_SCALE_UNITS |\n                                    10 - VALUE_SCALE_KILO |\n                                    11 - VALUE_SCALE_MEGA |\n                                    12 - VALUE_SCALE_GIGA |\n                                    13 - VALUE_SCALE_TERA |\n                                    14 - VALUE_SCALE_PETA |\n                                    15 - VALUE_SCALE_EXA |\n                                    16 - VALUE_SCALE_ZETTA |\n                                    17 - VALUE_SCALE_YOTTA &gt;\n            'rx_wavelength': [    # list of:\n              &lt;uint32&gt;,\n            ]\n            'tx_wavelength': [    # list of:\n              &lt;uint32&gt;,\n            ]\n            'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          }\n        }\n        'parent_rel_pos': &lt;int32&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      }\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE |\n                      13 - VALUE_TYPE_PERCENT |\n                      14 - VALUE_TYPE_METERS |\n                      15 - VALUE_TYPE_BYTES &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO |\n                              5 - RS232 &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON |\n                        8 - BITS &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'last_booted': &lt;google.protobuf.Timestamp&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>HeartbeatCheck\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: Heartbeat\n  'heartbeat_signature': &lt;fixed32&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Heartbeat Check","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RebootDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: RebootDeviceRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: RebootDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Reboot Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE |\n                    13 - VALUE_TYPE_PERCENT |\n                    14 - VALUE_TYPE_METERS |\n                    15 - VALUE_TYPE_BYTES &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO |\n                            5 - RS232 &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON |\n                      8 - BITS &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                   1 - VALUE_TYPE_OTHER |\n                   2 - VALUE_TYPE_UNKNOWN |\n                   3 - VALUE_TYPE_VOLTS_AC |\n                   4 - VALUE_TYPE_VOLTS_DC |\n                   5 - VALUE_TYPE_AMPERES |\n                   6 - VALUE_TYPE_WATTS |\n                   7 - VALUE_TYPE_HERTZ |\n                   8 - VALUE_TYPE_CELSIUS |\n                   9 - VALUE_TYPE_PERCENT_RH |\n                  10 - VALUE_TYPE_RPM |\n                  11 - VALUE_TYPE_CMM |\n                  12 - VALUE_TYPE_TRUTH_VALUE |\n                  13 - VALUE_TYPE_PERCENT |\n                  14 - VALUE_TYPE_METERS |\n                  15 - VALUE_TYPE_BYTES &gt;\n        'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                    1 - VALUE_SCALE_YOCTO |\n                    2 - VALUE_SCALE_ZEPTO |\n                    3 - VALUE_SCALE_ATTO |\n                    4 - VALUE_SCALE_FEMTO |\n                    5 - VALUE_SCALE_PICO |\n                    6 - VALUE_SCALE_NANO |\n                    7 - VALUE_SCALE_MICRO |\n                    8 - VALUE_SCALE_MILLI |\n                    9 - VALUE_SCALE_UNITS |\n                   10 - VALUE_SCALE_KILO |\n                   11 - VALUE_SCALE_MEGA |\n                   12 - VALUE_SCALE_GIGA |\n                   13 - VALUE_SCALE_TERA |\n                   14 - VALUE_SCALE_PETA |\n                   15 - VALUE_SCALE_EXA |\n                   16 - VALUE_SCALE_ZETTA |\n                   17 - VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n    '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n      'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                          1 - RJ45 |\n                          2 - FIBER_LC |\n                          3 - FIBER_SC_PC |\n                          4 - FIBER_MPO |\n                          5 - RS232 &gt;\n      'speed': &lt; 0 - SPEED_UNDEFINED |\n                 1 - DYNAMIC |\n                 2 - GIGABIT_1 |\n                 3 - GIGABIT_10 |\n                 4 - GIGABIT_25 |\n                 5 - GIGABIT_40 |\n                 6 - GIGABIT_100 |\n                 7 - GIGABIT_400 |\n                 8 - MEGABIT_2500 |\n                 9 - MEGABIT_1250 &gt;\n      'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                    1 - ETHERNET |\n                    2 - GPON |\n                    3 - XGPON |\n                    4 - XGSPON |\n                    5 - GFAST |\n                    6 - SERIAL |\n                    7 - EPON |\n                    8 - BITS &gt;\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n      'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                             1 - V48 |\n                             2 - V230 |\n                             3 - V115 &gt;\n    }\n    '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n      'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                        1 - QSFP |\n                        2 - QSFP_PLUS |\n                        3 - QSFP28 |\n                        4 - SFP |\n                        5 - SFP_PLUS |\n                        6 - XFP |\n                        7 - CFP4 |\n                        8 - CFP2 |\n                        9 - CPAK |\n                       10 - X2 |\n                       11 - OTHER |\n                       12 - CFP |\n                       13 - CFP2_ACO |\n                       14 - CFP2_DCO &gt;\n      'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - CPON |\n                      6 - NG_PON2 |\n                      7 - EPON &gt;\n      'max_distance': &lt;uint32&gt;,\n      'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      'rx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'tx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                             1 - VALUE_SCALE_YOCTO |\n                             2 - VALUE_SCALE_ZEPTO |\n                             3 - VALUE_SCALE_ATTO |\n                             4 - VALUE_SCALE_FEMTO |\n                             5 - VALUE_SCALE_PICO |\n                             6 - VALUE_SCALE_NANO |\n                             7 - VALUE_SCALE_MICRO |\n                             8 - VALUE_SCALE_MILLI |\n                             9 - VALUE_SCALE_UNITS |\n                            10 - VALUE_SCALE_KILO |\n                            11 - VALUE_SCALE_MEGA |\n                            12 - VALUE_SCALE_GIGA |\n                            13 - VALUE_SCALE_TERA |\n                            14 - VALUE_SCALE_PETA |\n                            15 - VALUE_SCALE_EXA |\n                            16 - VALUE_SCALE_ZETTA |\n                            17 - VALUE_SCALE_YOTTA &gt;\n    }\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                 1 - VALUE_TYPE_OTHER |\n                 2 - VALUE_TYPE_UNKNOWN |\n                 3 - VALUE_TYPE_VOLTS_AC |\n                 4 - VALUE_TYPE_VOLTS_DC |\n                 5 - VALUE_TYPE_AMPERES |\n                 6 - VALUE_TYPE_WATTS |\n                 7 - VALUE_TYPE_HERTZ |\n                 8 - VALUE_TYPE_CELSIUS |\n                 9 - VALUE_TYPE_PERCENT_RH |\n                10 - VALUE_TYPE_RPM |\n                11 - VALUE_TYPE_CMM |\n                12 - VALUE_TYPE_TRUTH_VALUE |\n                13 - VALUE_TYPE_PERCENT |\n                14 - VALUE_TYPE_METERS |\n                15 - VALUE_TYPE_BYTES &gt;\n      'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                  1 - VALUE_SCALE_YOCTO |\n                  2 - VALUE_SCALE_ZEPTO |\n                  3 - VALUE_SCALE_ATTO |\n                  4 - VALUE_SCALE_FEMTO |\n                  5 - VALUE_SCALE_PICO |\n                  6 - VALUE_SCALE_NANO |\n                  7 - VALUE_SCALE_MICRO |\n                  8 - VALUE_SCALE_MILLI |\n                  9 - VALUE_SCALE_UNITS |\n                 10 - VALUE_SCALE_KILO |\n                 11 - VALUE_SCALE_MEGA |\n                 12 - VALUE_SCALE_GIGA |\n                 13 - VALUE_SCALE_TERA |\n                 14 - VALUE_SCALE_PETA |\n                 15 - VALUE_SCALE_EXA |\n                 16 - VALUE_SCALE_ZETTA |\n                 17 - VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>StreamMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                 1 - VALUE_TYPE_OTHER |\n                 2 - VALUE_TYPE_UNKNOWN |\n                 3 - VALUE_TYPE_VOLTS_AC |\n                 4 - VALUE_TYPE_VOLTS_DC |\n                 5 - VALUE_TYPE_AMPERES |\n                 6 - VALUE_TYPE_WATTS |\n                 7 - VALUE_TYPE_HERTZ |\n                 8 - VALUE_TYPE_CELSIUS |\n                 9 - VALUE_TYPE_PERCENT_RH |\n                10 - VALUE_TYPE_RPM |\n                11 - VALUE_TYPE_CMM |\n                12 - VALUE_TYPE_TRUTH_VALUE |\n                13 - VALUE_TYPE_PERCENT |\n                14 - VALUE_TYPE_METERS |\n                15 - VALUE_TYPE_BYTES &gt;\n      'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                  1 - VALUE_SCALE_YOCTO |\n                  2 - VALUE_SCALE_ZEPTO |\n                  3 - VALUE_SCALE_ATTO |\n                  4 - VALUE_SCALE_FEMTO |\n                  5 - VALUE_SCALE_PICO |\n                  6 - VALUE_SCALE_NANO |\n                  7 - VALUE_SCALE_MICRO |\n                  8 - VALUE_SCALE_MILLI |\n                  9 - VALUE_SCALE_UNITS |\n                 10 - VALUE_SCALE_KILO |\n                 11 - VALUE_SCALE_MEGA |\n                 12 - VALUE_SCALE_GIGA |\n                 13 - VALUE_SCALE_TERA |\n                 14 - VALUE_SCALE_PETA |\n                 15 - VALUE_SCALE_EXA |\n                 16 - VALUE_SCALE_ZETTA |\n                 17 - VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Stream Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetStartupConfigurationInfo\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StartupConfigInfoRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StartupConfigInfoResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'config_url': &lt;string&gt;,\n  'version': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Startup Configuration Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/dmi_tools.html b/docs/dmi_tools.html
new file mode 100644
index 0000000..35a9f71
--- /dev/null
+++ b/docs/dmi_tools.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>Tools for the device-management-interface, e.g decoding / conversions.\x3c/p>","generated":"2021-07-14 13:19:25","inits":[],"keywords":[{"args":["bytestring","return_enum_integer=false","return_defaults=false","human_readable_timestamps=true"],"doc":"<p>Converts bytes to a Event as defined in <i>message Event\x3c/i> from hw_events_mgmt_service.proto\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>bytestring: &lt;bytes&gt;; Byte string, e.g. as it comes from Kafka messages.\x3c/li>\n<li>return_enum_integer: &lt;string&gt; or &lt;bool&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>false\x3c/i>.\x3c/li>\n<li>return_defaults: &lt;string&gt; or &lt;bool&gt;; Whether or not to return the default values. Default: <i>false\x3c/i>.\x3c/li>\n<li>human_readable_timestamps: &lt;string&gt; or &lt;bool&gt;; Whether or not to convert the timestamps to human-readable format. Default: <i>true\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: A dictionary with same structure as the <i>event\x3c/i> key from the return dictionary of keyword <i>Hw Event Mgmt Service List Events\x3c/i>.\x3c/p>\n<p><b>Example\x3c/b>:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Import Library\x3c/td>\n<td>grpc_robot.DmiTools\x3c/td>\n<td>WITH NAME\x3c/td>\n<td>dmi_tools\x3c/td>\n\x3c/tr>\n<tr>\n<td>${kafka_records}\x3c/td>\n<td>kafka.Records Get\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>FOR\x3c/td>\n<td>${kafka_record}\x3c/td>\n<td>IN\x3c/td>\n<td>@{kafka_records}\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>${event}\x3c/td>\n<td>dmi_tools.Hw Events Mgmt Decode Event\x3c/td>\n<td>${kafka_record}[message]\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Log\x3c/td>\n<td>${event}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>END\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","matched":true,"name":"Hw Events Mgmt Decode Event","shortdoc":"Converts bytes to a Event as defined in _message Event_ from hw_events_mgmt_service.proto","tags":[]},{"args":["bytestring","return_enum_integer=false","return_defaults=false","human_readable_timestamps=true"],"doc":"<p>Converts bytes to a Metric as defined in <i>message Metric\x3c/i> from hw_metrics_mgmt_service.proto\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>bytestring: &lt;bytes&gt;; Byte string, e.g. as it comes from Kafka messages.\x3c/li>\n<li>return_enum_integer: &lt;string&gt; or &lt;bool&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>false\x3c/i>.\x3c/li>\n<li>return_defaults: &lt;string&gt; or &lt;bool&gt;; Whether or not to return the default values. Default: <i>false\x3c/i>.\x3c/li>\n<li>human_readable_timestamps: &lt;string&gt; or &lt;bool&gt;; Whether or not to convert the timestamps to human-readable format. Default: <i>true\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: A dictionary with same structure as the <i>metric\x3c/i> key from the return dictionary of keyword <i>Hw Metrics Mgmt Service Get Metric\x3c/i>.\x3c/p>\n<p><b>Example\x3c/b>:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Import Library\x3c/td>\n<td>grpc_robot.DmiTools\x3c/td>\n<td>WITH NAME\x3c/td>\n<td>dmi_tools\x3c/td>\n\x3c/tr>\n<tr>\n<td>${kafka_records}\x3c/td>\n<td>kafka.Records Get\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>FOR\x3c/td>\n<td>${kafka_record}\x3c/td>\n<td>IN\x3c/td>\n<td>@{kafka_records}\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>${metric}\x3c/td>\n<td>dmi_tools.Hw Metrics Mgmt Decode Metric\x3c/td>\n<td>${kafka_record}[message]\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Log\x3c/td>\n<td>${metric}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>END\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","matched":true,"name":"Hw Metrics Mgmt Decode Metric","shortdoc":"Converts bytes to a Metric as defined in _message Metric_ from hw_metrics_mgmt_service.proto","tags":[]}],"name":"grpc_robot.DmiTools","named_args":true,"scope":"TEST","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/voltha_4_0_13.html b/docs/voltha_4_0_13.html
new file mode 100644
index 0000000..865cad4
--- /dev/null
+++ b/docs/voltha_4_0_13.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>voltha\x3c/td>\n<td>voltha-protos\x3c/td>\n<td>4.0.13\x3c/td>\n<td>grpc_robot.Voltha\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:19:19","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Extension Get Ext Value","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Extension Set Ext Value","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Hw Management Service Get Health Status","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Activate Onu","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Collect Statistics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Create Traffic Queues","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Create Traffic Schedulers","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Deactivate Onu","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Delete Group","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Delete Onu","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Disable Olt","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Disable Pon If","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Enable Indication","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Enable Pon If","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Flow Add","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Flow Remove","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Device Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Ext Value","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Gem Port Statistics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Logical Onu Distance","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Logical Onu Distance Zero","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Onu Statistics","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Heartbeat Check","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Omci Msg Out","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Onu Itu Pon Alarm Set","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Onu Packet Out","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Perform Group Operation","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Reboot","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Reenable Olt","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Remove Traffic Queues","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Remove Traffic Schedulers","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Uplink Packet Out","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Get Device Info","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Get Stats","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Receive Frames","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Send Frame","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Update Flow Table","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Activate Image Update","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Cancel Image Download","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Create Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Create Event Filter","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Delete Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Delete Event Filter","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Disable Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Disable Logical Device Port","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Disable Port","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Enable Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Enable Logical Device Port","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Enable Port","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Force Delete Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Alarm Device Data","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Core Instance","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Device Group","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Device Type","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Event Filter","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Ext Value","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Image Download","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Image Download Status","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Images","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Logical Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Logical Device Port","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Membership","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Mib Device Data","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Voltha","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Adapters","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Core Instances","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Flow Groups","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Flows","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Groups","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Ids","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Pm Configs","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Ports","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Types","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Event Filters","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Image Downloads","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Device Flow Groups","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Device Flows","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Device Meters","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Device Ports","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Devices","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Reboot Device","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Receive Change Events","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Receive Packets In","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Reconcile Devices","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Revert Image Update","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Self Test","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Set Ext Value","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Simulate Alarm","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Start Omci Test Action","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Stream Packets Out","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Subscribe","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Device Pm Configs","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Event Filter","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Logical Device Flow Group Table","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Logical Device Flow Table","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Logical Device Meter Table","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Membership","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>voltha-protos\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Voltha Version Get","shortdoc":"","tags":[]}],"name":"grpc_robot.Voltha","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/voltha_4_2_0.html b/docs/voltha_4_2_0.html
new file mode 100644
index 0000000..24e4c31
--- /dev/null
+++ b/docs/voltha_4_2_0.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>voltha\x3c/td>\n<td>voltha-protos\x3c/td>\n<td>4.0.13\x3c/td>\n<td>grpc_robot.Voltha\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:19:23","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Extension Get Ext Value","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Extension Set Ext Value","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Hw Management Service Get Health Status","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Activate Onu","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Collect Statistics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Create Traffic Queues","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Create Traffic Schedulers","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Deactivate Onu","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Delete Group","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Delete Onu","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Disable Olt","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Disable Pon If","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Enable Indication","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Enable Pon If","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Flow Add","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Flow Remove","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Device Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Ext Value","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Gem Port Statistics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Logical Onu Distance","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Logical Onu Distance Zero","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Get Onu Statistics","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Heartbeat Check","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Omci Msg Out","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Onu Itu Pon Alarm Set","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Onu Packet Out","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Perform Group Operation","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Reboot","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Reenable Olt","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Remove Traffic Queues","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Remove Traffic Schedulers","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Open Olt Uplink Packet Out","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Get Device Info","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Get Stats","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Receive Frames","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Send Frame","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Pon Sim Update Flow Table","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Activate Image Update","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Cancel Image Download","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Create Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Create Event Filter","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Delete Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Delete Event Filter","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Disable Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Disable Logical Device Port","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Disable Port","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Enable Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Enable Logical Device Port","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Enable Port","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Force Delete Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Alarm Device Data","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Core Instance","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Device Group","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Device Type","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Event Filter","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Ext Value","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Image Download","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Image Download Status","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Images","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Logical Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Logical Device Port","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Membership","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Mib Device Data","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Get Voltha","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Adapters","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Core Instances","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Flow Groups","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Flows","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Groups","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Ids","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Pm Configs","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Ports","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Device Types","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Event Filters","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Image Downloads","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Device Flow Groups","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Device Flows","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Device Meters","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Device Ports","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service List Logical Devices","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Reboot Device","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Receive Change Events","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Receive Packets In","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Reconcile Devices","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Revert Image Update","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Self Test","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Set Ext Value","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Simulate Alarm","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Start Omci Test Action","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Stream Packets Out","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Subscribe","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Device Pm Configs","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Event Filter","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Logical Device Flow Group Table","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Logical Device Flow Table","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Logical Device Meter Table","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>no documentation available\x3c/p>","matched":true,"name":"Voltha Service Update Membership","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>voltha-protos\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Voltha Version Get","shortdoc":"","tags":[]}],"name":"grpc_robot.Voltha","named_args":true,"scope":"SUITE","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/docs/voltha_tools.html b/docs/voltha_tools.html
new file mode 100644
index 0000000..bb67676
--- /dev/null
+++ b/docs/voltha_tools.html
@@ -0,0 +1,1034 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Expires" content="-1">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
+<style media="all" type="text/css">
+body {
+    background: white;
+    color: black;
+    font-size: small;
+    font-family: sans-serif;
+    padding: 0 0.5em;
+}
+.metadata th {
+    text-align: left;
+    padding-right: 1em;
+}
+a.name, span.name {
+    font-style: italic;
+}
+a, a:link, a:visited {
+    color: #c30;
+}
+a img {
+    border: 1px solid #c30 !important;
+}
+a:hover, a:active {
+    text-decoration: underline;
+    color: black;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+.shortcuts {
+    margin: 1em 0;
+    font-size: 0.9em;
+}
+.shortcuts a {
+    display: inline-block;
+    text-decoration: none;
+    white-space: nowrap;
+    color: black;
+}
+.shortcuts a::first-letter {
+    font-weight: bold;
+    letter-spacing: 0.1em;
+}
+.normal-first-letter::first-letter {
+    font-weight: normal !important;
+    letter-spacing: 0 !important;
+}
+.shortcut-list-toggle, .tag-list-toggle {
+    margin-bottom: 1em;
+    font-size: 0.9em;
+}
+input.switch {
+    display: none;
+}
+.slider {
+    background-color: grey;
+    display: inline-block;
+    position: relative;
+    top: 5px;
+    height: 18px;
+    width: 36px;
+}
+.slider:before {
+    background-color: white;
+    content: "";
+    position: absolute;
+    top: 3px;
+    left: 3px;
+    height: 12px;
+    width: 12px;
+}
+input.switch:checked + .slider::before {
+    background-color: white;
+    left: 21px;
+}
+.keywords {
+    border: 1px solid #ccc;
+    border-collapse: collapse;
+    empty-cells: show;
+    margin: 0.3em 0;
+    width: 100%;
+}
+.keywords th, .keywords td {
+    border: 1px solid #ccc;
+    padding: 0.2em;
+    vertical-align: top;
+}
+.keywords th {
+    background: #ddd;
+    color: black;
+}
+.kw {
+    width: 15%;
+}
+.args {
+    width: 25%;
+}
+.tags {
+    width: 10%;
+}
+.doc {
+    width: 60%;
+}
+td.kw a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: bold;
+}
+.args span {
+    font-style: italic;
+    padding: 0 0.1em;
+}
+.tags a {
+    color: inherit;
+    text-decoration: none;
+    padding: 0 0.1em;
+}
+.footer {
+    font-size: 0.9em;
+}
+/* Docs originating from HTML and reST are wrapped to divs. */
+.doc div > *:first-child {
+    margin-top: 0;
+}
+.doc div > *:last-child {    /* Does not work with IE8. */
+    margin-bottom: 0;
+}
+#search, #open-search {
+    position: fixed;
+    bottom: 5px;
+    right: 5px;
+    z-index: 1000;
+}
+#search {
+    width: 30em;
+    display: none;
+}
+#open-search {
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    width: 40px;
+    height: 40px;
+    background-color: white;
+    background-repeat: no-repeat;
+    background-position: center;
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAY5JREFUSImt1LtrFGEUBfCfURsFHwEr29UNkS3MFklrQK0EIYUk/5IQ0FSmCCKW1mpAommToCKoK+lsLUKeSFbXFLuT3B13Hjt64INvOPeec+fOnUs2mpjHBrbRwQE+YQFTObm5qGMZf0qct7gxjPgM9kqKJ+cAs2XFf4fEX3iOe7iKsxjFHTxFO8R2ikzqqcq/oVFQUANfUm8ynhUce97qVVoGo/gaclcGBTVDQDuvigw09Lfrr+maD+TSkOIJngWNx2lyI5C3KxrcDRof0+R2IC9XNLgSNPbTZDKa7YricFr/v3EqIUZ0xxPO4FxFg0vhnoz7scFmICcqGjTDvRWJEayG57mKBg/C/U2anHDSu5+oDSlex6GTlTE2KOhVMPmACyXFL+qOZZL7Xf/3OMY17KZMrheI13px6e26nmVyX3eDxnYt4lav0qTiaTzp8VkrPNdkNyOpkyM4lEkNL0uK/CjgXw8ySHATD7GGLd0/fgfv8QiTOI93BSb/jCKT/4Isk1ZOTiWTF0H8M8aPANvFyARlADGFAAAAAElFTkSuQmCC);
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zLjUgMGMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjVzMS41NyAzLjUgMy41IDMuNWMuNTkgMCAxLjE3LS4xNCAxLjY2LS40MWExIDEgMCAwIDAgLjEzLjEzbDEgMWExLjAyIDEuMDIgMCAxIDAgMS40NC0xLjQ0bC0xLTFhMSAxIDAgMCAwLS4xNi0uMTNjLjI3LS40OS40NC0xLjA2LjQ0LTEuNjYgMC0xLjkzLTEuNTctMy41LTMuNS0zLjV6bTAgMWMxLjM5IDAgMi41IDEuMTEgMi41IDIuNSAwIC42Ni0uMjQgMS4yNy0uNjYgMS43Mi0uMDEuMDEtLjAyLjAyLS4wMy4wM2ExIDEgMCAwIDAtLjEzLjEzYy0uNDQuNC0xLjA0LjYzLTEuNjkuNjMtMS4zOSAwLTIuNS0xLjExLTIuNS0yLjVzMS4xMS0yLjUgMi41LTIuNXoiCiAgLz4KPC9zdmc+), none;
+    background-size: 24px 24px;
+}
+#open-search:hover {
+    background-color: #ccc;
+}
+fieldset {
+    background: white;
+    border: 2px solid #ccc;
+    border-radius: 4px;
+    padding: 6px 8px;
+}
+fieldset fieldset {
+    border: 1px solid #ccc;
+    margin: 4px 0;
+}
+#search-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    letter-spacing: 1px;
+}
+#search-string {
+    box-sizing: border-box;
+    width: 100%;
+}
+#hide-unmatched {
+    margin: 0.5em 0 0 1em;
+}
+#search-buttons {
+    float: right;
+}
+.highlight {
+    background: yellow;
+}
+.no-match {
+    color: gray !important;
+}
+tr.no-match.hide-unmatched {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+/* Pygments 'default' style sheet. Generated with Pygments 2.1.3 using:
+     pygmentize -S default -f html -a .code > src/robot/htmldata/libdoc/pygments.css
+*/
+.code .hll { background-color: #ffffcc }
+.code  { background: #f8f8f8; }
+.code .c { color: #408080; font-style: italic } /* Comment */
+.code .err { border: 1px solid #FF0000 } /* Error */
+.code .k { color: #008000; font-weight: bold } /* Keyword */
+.code .o { color: #666666 } /* Operator */
+.code .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #BC7A00 } /* Comment.Preproc */
+.code .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code .gd { color: #A00000 } /* Generic.Deleted */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #FF0000 } /* Generic.Error */
+.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code .gi { color: #00A000 } /* Generic.Inserted */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code .gt { color: #0044DD } /* Generic.Traceback */
+.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code .kp { color: #008000 } /* Keyword.Pseudo */
+.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #B00040 } /* Keyword.Type */
+.code .m { color: #666666 } /* Literal.Number */
+.code .s { color: #BA2121 } /* Literal.String */
+.code .na { color: #7D9029 } /* Name.Attribute */
+.code .nb { color: #008000 } /* Name.Builtin */
+.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code .no { color: #880000 } /* Name.Constant */
+.code .nd { color: #AA22FF } /* Name.Decorator */
+.code .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code .nf { color: #0000FF } /* Name.Function */
+.code .nl { color: #A0A000 } /* Name.Label */
+.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code .nv { color: #19177C } /* Name.Variable */
+.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mb { color: #666666 } /* Literal.Number.Bin */
+.code .mf { color: #666666 } /* Literal.Number.Float */
+.code .mh { color: #666666 } /* Literal.Number.Hex */
+.code .mi { color: #666666 } /* Literal.Number.Integer */
+.code .mo { color: #666666 } /* Literal.Number.Oct */
+.code .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code .sc { color: #BA2121 } /* Literal.String.Char */
+.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code .s2 { color: #BA2121 } /* Literal.String.Double */
+.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code .sx { color: #008000 } /* Literal.String.Other */
+.code .sr { color: #BB6688 } /* Literal.String.Regex */
+.code .s1 { color: #BA2121 } /* Literal.String.Single */
+.code .ss { color: #19177C } /* Literal.String.Symbol */
+.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code .vc { color: #19177C } /* Name.Variable.Class */
+.code .vg { color: #19177C } /* Name.Variable.Global */
+.code .vi { color: #19177C } /* Name.Variable.Instance */
+.code .il { color: #666666 } /* Literal.Number.Integer.Long */
+</style>
+<style media="print" type="text/css">
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 8pt;
+}
+a {
+    text-decoration: none;
+}
+#search, #open-search {
+    display: none;
+}
+</style>
+<style media="all" type="text/css">
+#javascript-disabled {
+    width: 600px;
+    margin: 100px auto 0 auto;
+    padding: 20px;
+    color: black;
+    border: 1px solid #ccc;
+    background: #eee;
+}
+#javascript-disabled h1 {
+    width: 100%;
+    float: none;
+}
+#javascript-disabled ul {
+    font-size: 1.2em;
+}
+#javascript-disabled li {
+    margin: 0.5em 0;
+}
+#javascript-disabled b {
+    font-style: italic;
+}
+</style>
+<style media="all" type="text/css">
+.doc > * {
+    margin: 0.7em 1em 0.1em 1em;
+    padding: 0;
+}
+.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
+    margin: 0.7em 0 0.1em 0;
+}
+.doc > *:first-child {
+    margin-top: 0.1em;
+}
+.doc table {
+    border: 1px solid #ccc;
+    background: transparent;
+    border-collapse: collapse;
+    empty-cells: show;
+    font-size: 0.9em;
+}
+.doc table th, .doc table td {
+    border: 1px solid #ccc;
+    background: transparent;
+    padding: 0.1em 0.3em;
+    height: 1.2em;
+}
+.doc table th {
+    text-align: center;
+    letter-spacing: 0.1em;
+}
+.doc pre {
+    font-size: 1.1em;
+    letter-spacing: 0.05em;
+    background: #f4f4f4;
+}
+.doc code {
+    padding: 0 0.2em;
+    letter-spacing: 0.05em;
+    background: #eee;
+}
+.doc li {
+    list-style-position: inside;
+    list-style-type: square;
+}
+.doc img {
+    border: 1px solid #ccc;
+}
+.doc hr {
+    background: #ccc;
+    height: 1px;
+    border: 0;
+}
+</style>
+<script type="text/javascript">
+storage = function () {
+    var prefix = 'robot-framework-';
+    var storage;
+    function init(user) {
+        prefix += user + '-';
+        storage = getStorage();
+    }
+    function getStorage() {
+        // Use localStorage if it's accessible, normal object otherwise.
+        // Inspired by https://stackoverflow.com/questions/11214404
+        try {
+            localStorage.setItem(prefix, prefix);
+            localStorage.removeItem(prefix);
+            return localStorage;
+        } catch (exception) {
+            return {};
+        }
+    }
+    function get(name, defaultValue) {
+        var value = storage[prefix + name];
+        if (typeof value === 'undefined')
+            return defaultValue;
+        return value;
+    }
+    function set(name, value) {
+        storage[prefix + name] = value;
+    }
+    return {init: init, get: get, set: set};
+}();
+</script>
+<script type="text/javascript">
+window.util = function () {
+    function map(elems, func) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            ret[i] = func(elems[i]);
+        }
+        return ret;
+    }
+    function filter(elems, predicate) {
+        var ret = [];
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (predicate(elems[i]))
+                ret.push(elems[i]);
+        }
+        return ret;
+    }
+    function all(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (!elems[i])
+                return false;
+        }
+        return true;
+    }
+    function any(elems) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i])
+                return elems[i];
+        }
+        return false;
+    }
+    function contains(elems, e) {
+        for (var i = 0, len = elems.length; i < len; i++) {
+            if (elems[i] == e)
+                return true;
+        }
+        return false;
+    }
+    function last(items) {
+        return items[items.length-1];
+    }
+    function unescape(string) {
+        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
+    }
+    function escape(string) {
+        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+    }
+    function normalize(string) {
+        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
+    }
+    function regexpEscape(string) {
+        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
+    }
+    function Matcher(pattern) {
+        pattern = regexpEscape(normalize(pattern));
+        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
+        var regexp = new RegExp(rePattern);
+        function matches(string) {
+            return regexp.test(normalize(string));
+        }
+        return {
+            matches: matches,
+            matchesAny: function (strings) {
+                for (var i = 0, len = strings.length; i < len; i++)
+                    if (matches(strings[i]))
+                        return true;
+                return false;
+            }
+        };
+    }
+    function formatParentName(item) {
+        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
+        return parentName.replace(/\./g, ' . ');
+    }
+    function timeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return formatTime(date.getHours(), date.getMinutes(),
+                          date.getSeconds(), date.getMilliseconds());
+    }
+    function dateFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return padTo(date.getFullYear(), 4) +
+               padTo(date.getMonth() + 1, 2) +
+               padTo(date.getDate(), 2);
+    }
+    function dateTimeFromDate(date) {
+        if (!date)
+            return 'N/A';
+        return dateFromDate(date) + ' ' + timeFromDate(date);
+    }
+    function formatTime(hours, minutes, seconds, milliseconds) {
+        return padTo(hours, 2) + ':' +
+               padTo(minutes, 2) + ':' +
+               padTo(seconds, 2) + '.' +
+               padTo(milliseconds, 3);
+    }
+    function formatElapsed(elapsed) {
+        var millis = elapsed;
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        return formatTime(hours, minutes, seconds, millis);
+    }
+    function padTo(number, len) {
+        var numString = number + "";
+        while (numString.length < len) numString = "0" + numString;
+        return numString;
+    }
+    function timestamp(millis) {
+        // used also by tools that do not set window.output.baseMillis
+        var base = window.output ? window.output.baseMillis : 0;
+        return new Date(base + millis);
+    }
+    function createGeneratedString(timestamp) {
+        var date = new Date(timestamp);
+        var dt = dateTimeFromDate(date).slice(0, 17);  // drop millis
+        var offset = date.getTimezoneOffset();
+        var sign = offset > 0 ? '-' : '+';
+        var hh = Math.floor(Math.abs(offset) / 60);
+        var mm = Math.abs(offset) % 60;
+        return dt + ' UTC' + sign + padTo(hh, 2) + ':' + padTo(mm, 2);
+    }
+    function createGeneratedAgoString(timestamp) {
+        function timeString(time, shortUnit) {
+            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
+                        s: 'second'}[shortUnit];
+            var end = time == 1 ? ' ' : 's ';
+            return time + ' ' + unit + end;
+        }
+        function compensateLeapYears(days, years) {
+            // Not a perfect algorithm but ought to be enough
+            return days - Math.floor(years / 4);
+        }
+        var generated = Math.round(timestamp / 1000);
+        var current = Math.round(new Date().getTime() / 1000);
+        var elapsed = current - generated;
+        var prefix = '';
+        if (elapsed < 0) {
+            prefix = '- ';
+            elapsed = Math.abs(elapsed);
+        }
+        var secs  = elapsed % 60;
+        var mins  = Math.floor(elapsed / 60) % 60;
+        var hours = Math.floor(elapsed / (60*60)) % 24;
+        var days  = Math.floor(elapsed / (60*60*24)) % 365;
+        var years = Math.floor(elapsed / (60*60*24*365));
+        if (years) {
+            days = compensateLeapYears(days, years);
+            return prefix + timeString(years, 'y') + timeString(days, 'd');
+        } else if (days) {
+            return prefix + timeString(days, 'd') + timeString(hours, 'h');
+        } else if (hours) {
+            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
+        } else if (mins) {
+            return prefix + timeString(mins, 'm') + timeString(secs, 's');
+        } else {
+            return prefix + timeString(secs, 's');
+        }
+    }
+    function parseQueryString(query) {
+        var result = {};
+        if (!query)
+            return result;
+        var params = query.split('&');
+        var parts;
+        function decode(item) {
+            return decodeURIComponent(item.replace('+', ' '));
+        }
+        for (var i = 0, len = params.length; i < len; i++) {
+            parts = params[i].split('=');
+            result[decode(parts.shift())] = decode(parts.join('='));
+        }
+        return result;
+    }
+    return {
+        map: map,
+        filter: filter,
+        all: all,
+        any: any,
+        contains: contains,
+        last: last,
+        escape: escape,
+        unescape: unescape,
+        normalize: normalize,
+        regexpEscape: regexpEscape,
+        Matcher: Matcher,
+        formatParentName: formatParentName,
+        timeFromDate: timeFromDate,
+        dateFromDate: dateFromDate,
+        dateTimeFromDate: dateTimeFromDate,
+        formatElapsed: formatElapsed,
+        timestamp: timestamp,
+        createGeneratedString: createGeneratedString,
+        createGeneratedAgoString: createGeneratedAgoString,
+        parseQueryString: parseQueryString
+    };
+}();
+</script>
+<script type="text/javascript">
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Templates Plugin 1.0.0pre
+ * http://github.com/jquery/jquery-tmpl
+ * Requires jQuery 1.4.2
+ *
+ * Copyright Software Freedom Conservancy, Inc.
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
+</script>
+<script type="text/javascript">
+/*
+ * jQuery Highlight plugin
+ *
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ *
+ * Copyright (c) 2009 Bartek Szopka
+ *
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
+</script>
+<script type="text/javascript">
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>Tools for the voltha, e.g decoding / conversions.\x3c/p>","generated":"2021-07-14 13:19:26","inits":[],"keywords":[{"args":["bytestring","return_enum_integer=false","return_defaults=false","human_readable_timestamps=true"],"doc":"<p>Converts bytes to an Event as defined in <i>message Event\x3c/i> from events.proto\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>bytestring: &lt;bytes&gt;; Byte string, e.g. as it comes from Kafka messages.\x3c/li>\n<li>return_enum_integer: &lt;string&gt; or &lt;bool&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>false\x3c/i>.\x3c/li>\n<li>return_defaults: &lt;string&gt; or &lt;bool&gt;; Whether or not to return the default values. Default: <i>false\x3c/i>.\x3c/li>\n<li>human_readable_timestamps: &lt;string&gt; or &lt;bool&gt;; Whether or not to convert the timestamps to human-readable format. Default: <i>true\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: A dictionary with <i>event\x3c/i> structure.\x3c/p>\n<p><b>Example\x3c/b>:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Import Library\x3c/td>\n<td>grpc_robot.VolthaTools\x3c/td>\n<td>WITH NAME\x3c/td>\n<td>voltha_tools\x3c/td>\n\x3c/tr>\n<tr>\n<td>${kafka_records}\x3c/td>\n<td>kafka.Records Get\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>FOR\x3c/td>\n<td>${kafka_record}\x3c/td>\n<td>IN\x3c/td>\n<td>@{kafka_records}\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>${event}\x3c/td>\n<td>voltha_tools.Events Decode Event\x3c/td>\n<td>${kafka_record}[message]\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Log\x3c/td>\n<td>${event}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>END\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","matched":true,"name":"Events Decode Event","shortdoc":"Converts bytes to an Event as defined in _message Event_ from events.proto","tags":[]},{"args":["bytestring","return_enum_integer=false","return_defaults=false","human_readable_timestamps=true"],"doc":"<p>Converts bytes to an resource instance as defined in <i>message ResourceInstance\x3c/i> from tech_profile.proto\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>bytestring: &lt;bytes&gt;; Byte string, e.g. as it comes from Kafka messages.\x3c/li>\n<li>return_enum_integer: &lt;string&gt; or &lt;bool&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>false\x3c/i>.\x3c/li>\n<li>return_defaults: &lt;string&gt; or &lt;bool&gt;; Whether or not to return the default values. Default: <i>false\x3c/i>.\x3c/li>\n<li>human_readable_timestamps: &lt;string&gt; or &lt;bool&gt;; Whether or not to convert the timestamps to human-readable format. Default: <i>true\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: A dictionary with <i>event\x3c/i> structure.\x3c/p>\n<p><b>Example\x3c/b>:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Import Library\x3c/td>\n<td>grpc_robot.VolthaTools\x3c/td>\n<td>WITH NAME\x3c/td>\n<td>voltha_tools\x3c/td>\n\x3c/tr>\n<tr>\n<td>${kafka_records}\x3c/td>\n<td>kafka.Records Get\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>FOR\x3c/td>\n<td>${kafka_record}\x3c/td>\n<td>IN\x3c/td>\n<td>@{kafka_records}\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>${event}\x3c/td>\n<td>voltha_tools. Tech Profile Decode Resource Instance\x3c/td>\n<td>${kafka_record}[message]\x3c/td>\n\x3c/tr>\n<tr>\n<td>\x3c/td>\n<td>Log\x3c/td>\n<td>${event}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>END\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","matched":true,"name":"Tech Profile Decode Resource Instance","shortdoc":"Converts bytes to an resource instance as defined in _message ResourceInstance_ from tech_profile.proto","tags":[]}],"name":"grpc_robot.VolthaTools","named_args":true,"scope":"TEST","version":"2.9.3"};
+</script>
+<title></title>
+</head>
+<body>
+
+<div id="javascript-disabled">
+  <h1>Opening library documentation failed</h1>
+  <ul>
+    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
+    <li>Make sure you are using a <b>modern enough browser</b>. If using Internet Explorer, version 8 or newer is required.</li>
+    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
+  </ul>
+</div>
+
+<script type="text/javascript">
+    // Not using jQuery here for speed and to support ancient browsers.
+    document.getElementById('javascript-disabled').style.display = 'none';
+</script>
+
+<script type="text/javascript">
+    $(document).ready(function() {
+        parseTemplates();
+        document.title = libdoc.name;
+        storage.init('libdoc');
+        renderTemplate('base', libdoc, $('body'));
+        if (libdoc.inits.length) {
+            renderTemplate('importing', libdoc);
+        }
+        renderTemplate('shortcuts', libdoc);
+        initShortcutListStyle('shortcut', libdoc.keywords);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+            initShortcutListStyle('tag', libdoc.all_tags);
+        }
+        renderTemplate('keywords', libdoc);
+        renderTemplate('footer', libdoc);
+        params = util.parseQueryString(window.location.search.slice(1));
+        if ("tag" in params) {
+            tagSearch(params["tag"], window.location.hash);
+        }
+        scrollToHash();
+        $(document).bind('keydown', handleKeyDown);
+        workaroundFirefoxWidthBug();
+    });
+
+    function parseTemplates() {
+        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
+            $.template(elem.id, elem.text);
+        });
+    }
+
+    function renderTemplate(name, arguments, container) {
+        if (!container) {
+            container = $('#' + name + '-container');
+            container.empty();
+        }
+        if (!arguments.search) {
+            arguments.search = false;
+        }
+        $.tmpl(name + '-template', arguments).appendTo(container);
+    }
+
+    function workaroundFirefoxWidthBug() {
+        // https://github.com/robotframework/robotframework/issues/3456
+        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
+        $('.shortcuts a').width('max-content');
+    }
+
+    function initShortcutListStyle(name, items) {
+        var style = storage.get(name + '-list-style', 'compact');
+        if (style != 'compact' && items.length > 1) {
+            $('.' + name + '-list-separator').html('<br>');
+            $('.' + name + '-list-toggle .switch').prop('checked', true);
+        }
+    }
+
+    function setShortcutListStyle(name) {
+        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
+        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
+        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
+    }
+
+    function handleKeyDown(event) {
+        event = event || window.event;
+        var keyCode = event.keyCode || event.which;
+        if (keyCode === 27)  // esc
+            setTimeout(closeSearch, 0);
+        if (keyCode === 83 && $('#search').is(':hidden'))  // s
+            setTimeout(openSearch, 0);
+    }
+
+    function scrollToHash() {
+        if (window.location.hash) {
+            var hash = window.location.hash.substring(1).replace('+', ' ');
+            window.location.hash = '';
+            window.location.hash = hash;
+        }
+    }
+
+    function tagSearch(tag, hash) {
+        var include = {tags: true, tagsExact: true};
+        var url = window.location.pathname + "?tag=" + tag + (hash || "");
+        markMatches(tag, include);
+        highlightMatches(tag, include);
+        $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
+        history.replaceState && history.replaceState(null, '', url);
+        document.getElementById('Shortcuts').scrollIntoView();
+    }
+
+    function doSearch() {
+        var string = $('#search-string').val();
+        var include = getIncludesAndDisableIfOnlyOneLeft();
+        if (string) {
+            markMatches(string, include);
+            highlightMatches(string, include);
+            setMatchVisibility();
+        } else {
+            resetKeywords();
+        }
+    }
+
+    function getIncludesAndDisableIfOnlyOneLeft() {
+        var name = $('#include-name');
+        var args = $('#include-args');
+        var doc = $('#include-doc');
+        var tags = $('#include-tags');
+        var include = {name: name.prop('checked'),
+                       args: args.prop('checked'),
+                       doc: doc.prop('checked'),
+                       tags: !!tags.prop('checked')};
+        if ((!include.name) && (!include.args) && (!include.doc)) {
+            tags.prop('disabled', true);
+        } else if ((!include.name) && (!include.args) && (!include.tags)) {
+            doc.prop('disabled', true);
+        } else if ((!include.name) && (!include.doc) && (!include.tags)) {
+            args.prop('disabled', true);
+        } else if ((!include.args) && (!include.doc) && (!include.tags)) {
+            name.prop('disabled', true);
+        } else {
+            name.prop('disabled', false);
+            args.prop('disabled', false);
+            doc.prop('disabled', false);
+            tags.prop('disabled', false);
+        }
+        return include;
+    }
+
+    function markMatches(pattern, include) {
+        pattern = util.regexpEscape(pattern);
+        if (include.tagsExact) {
+            pattern = '^' + pattern + '$';
+        }
+        var regexp = new RegExp(pattern, 'i');
+        var test = regexp.test.bind(regexp);
+        var result = {contains_tags: libdoc.contains_tags};
+        var matchCount = 0;
+        result.keywords = util.map(libdoc.keywords, function (kw) {
+            kw = $.extend({}, kw);
+            kw.matched = (include.name && test(kw.name) ||
+                          include.args && test(kw.args) ||
+                          include.doc && test($(kw.doc).text()) ||
+                          include.tags && util.any(util.map(kw.tags, test)));
+            if (kw.matched)
+                matchCount++;
+            return kw
+        });
+        renderTemplate('shortcuts', result);
+        renderTemplate('keywords', result);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        var ending = matchCount != 1 ? 's.' : '.';
+        $('#match-count').show().text(matchCount + ' matched keyword' + ending);
+        $('#altogether-count').hide();
+        if (matchCount == 0)
+            $('#keywords-container').find('table').empty();
+        setTimeout(workaroundFirefoxWidthBug, 100);
+    }
+
+    function highlightMatches(string, include) {
+        var shortcuts = $('#shortcuts-container').find('.match');
+        var keywords = $('#keywords-container').find('.match');
+        if (include.name) {
+            shortcuts.highlight(string);
+            keywords.find('.kw').highlight(string);
+        }
+        if (include.args) {
+            keywords.find('.args').highlight(string);
+        }
+        if (include.doc) {
+            keywords.find('.doc').highlight(string);
+        }
+        if (include.tags) {
+            var matches = keywords.find('.tags').find('a').add(
+                    $('#tags-container').find('a'));
+            if (include.tagsExact) {
+                matches = matches.filter(function (index, tag) {
+                    return $(tag).text().toUpperCase() == string.toUpperCase();
+                });
+            }
+            matches.highlight(string);
+        }
+    }
+
+    function openSearch() {
+        $('#search').show();
+        $('#open-search').hide();
+        $('#search-string').focus().select();
+        $(document).scrollTop($("#Shortcuts").offset().top);
+    }
+
+    function closeSearch() {
+        $('#search').hide();
+        $('#open-search').show();
+    }
+
+    function resetSearch() {
+        $('#search-string').val('');
+        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        resetKeywords();
+    }
+
+    function resetKeywords() {
+        renderTemplate('shortcuts', libdoc);
+        renderTemplate('keywords', libdoc);
+        if (libdoc.contains_tags) {
+            renderTemplate('tags', libdoc);
+        }
+        $('#match-count').hide();
+        $('#altogether-count').show();
+        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
+        setTimeout(workaroundFirefoxWidthBug, 100);
+        scrollToHash();
+    }
+
+    function setMatchVisibility() {
+        var kws = $('#keywords-container').find('.kw-row');
+        var hide = $('#hide-unmatched').prop('checked');
+        kws.toggleClass('hide-unmatched', hide);
+    }
+
+    // http://stackoverflow.com/a/18484799
+    var delay = (function () {
+        var timer = 0;
+        return function(callback, ms) {
+            clearTimeout(timer);
+            timer = setTimeout(callback, ms);
+        };
+    })();
+
+</script>
+
+<script type="text/x-jquery-tmpl" id="base-template">
+    <h1>${name}</h1>
+    <table class="metadata">
+        {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
+        {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
+        <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
+    </table>
+    <div id="introduction-container">
+        <h2 id="Introduction">Introduction</h2>
+        <div class="doc">{{html doc}}</div>
+    </div>
+    <div id="importing-container"></div>
+    <div id="shortcuts-container"></div>
+    <div id="tags-container"></div>
+    <div id="keywords-container"></div>
+    <div id="footer-container"></div>
+    <form id="search" action="javascript:void(0)">
+        <fieldset>
+            <legend id="search-title">Search keywords</legend>
+            <input type="text" id="search-string" onkeyup="delay(doSearch, 500)">
+            <fieldset>
+                <legend>Search from</legend>
+                <input type="checkbox" id="include-name" onclick="doSearch()" checked>
+                <label for="include-name">Name</label>
+                <input type="checkbox" id="include-args" onclick="doSearch()" checked>
+                <label for="include-args">Arguments</label>
+                <input type="checkbox" id="include-doc" onclick="doSearch()" checked>
+                <label for="include-doc">Documentation</label>
+                {{if libdoc.contains_tags}}
+                <input type="checkbox" id="include-tags" onclick="doSearch()" checked>
+                <label for="include-tags">Tags</label>
+                {{/if}}
+            </fieldset>
+            <input type="checkbox" id="hide-unmatched" onclick="setMatchVisibility()" checked>
+            <label for="hide-unmatched">Hide unmatched keywords</label>
+            <div id="search-buttons">
+                <input type="button" value="Reset" onclick="resetSearch()"
+                       title="Reset search">
+                <input type="button" value="Close" onclick="closeSearch()"
+                       title="Close search (shortcut: <Esc>)">
+            </div>
+        </fieldset>
+    </form>
+    <div id="open-search" onclick="openSearch()" title="Search keywords (shortcut: s)"></div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="importing-template">
+    <h2 id="Importing">Importing</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="args">Arguments</th>
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each inits}}
+        <tr class="kw-row">
+            <td class="args">
+            {{each args}}
+              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+            </td>
+            <td class="doc">{{html $value.doc}}</td>
+        </tr>
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="shortcuts-template">
+    <h2 id="Shortcuts">Shortcuts</h2>
+    {{if keywords.length > 1}}
+    <div class="shortcut-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each keywords}}
+        <a href="#${encodeURIComponent($value.name)}"
+           class="{{if $value.matched === false}}no-{{/if}}match"
+           title="${$value.shortdoc}">${$value.name}</a>
+        {{if $index < keywords.length-1}}
+        <span class="shortcut-list-separator">&middot;</span>
+        {{/if}}
+        {{/each}}
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="tags-template">
+    <h2 id="Tags">Tags</h2>
+    {{if all_tags.length > 1}}
+    <div class="tag-list-toggle">
+        <b>List style:</b>&nbsp; Compact
+        <label title="Switch between compact list and expanded list">
+            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
+            <span class="slider"></span>
+        </label>
+        Expanded
+    </div>
+    {{/if}}
+    <div class='shortcuts'>
+        {{each all_tags}}
+        <a href="javascript:tagSearch('${$value}')"
+           title="Show keywords with this tag">${$value}</a>
+        <span class="tag-list-separator">&middot;</span>
+        {{/each}}
+        <a href="javascript:resetKeywords()" class="normal-first-letter"
+           title="Show all keywords">[Reset]</a>
+    </div>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keywords-template">
+    <h2 id="Keywords">Keywords</h2>
+    <table border="1" class="keywords">
+        <tr>
+            <th class="kw">Keyword</th>
+            <th class="args">Arguments</th>
+            {{if libdoc.contains_tags}}
+            <th class="tags">Tags</th>
+            {{/if}}
+            <th class="doc">Documentation</th>
+        </tr>
+        {{each keywords}}
+            {{tmpl($value) 'keyword-template'}}
+        {{/each}}
+    </table>
+</script>
+
+<script type="text/x-jquery-tmpl" id="keyword-template">
+    <tr class="kw-row {{if matched === false}}no-{{/if}}match">
+        <td class="kw">
+            <a name="${name}" href="#${encodeURIComponent(name)}"
+               title="Link to this keyword">${name}</a>
+        </td>
+        <td class="args">
+            {{each args}}
+            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{if libdoc.contains_tags}}
+        <td class="tags">
+            {{each tags}}
+            <a href="javascript:tagSearch('${$value}')"
+               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+            {{/each}}
+        </td>
+        {{/if}}
+        <td class="doc">{{html doc}}</td>
+    </tr>
+</script>
+
+
+<script type="text/x-jquery-tmpl" id="footer-template">
+    <p class="footer">
+        <span id="altogether-count">Altogether ${keywords.length} keywords.</span>
+        <span id="match-count"></span>
+        <br>
+        Generated by <a href="http://robotframework.org/robotframework/#built-in-tools">Libdoc</a> on ${generated}.
+    </p>
+</script>
+
+</body>
+</html>
diff --git a/grpc_robot/__init__.py b/grpc_robot/__init__.py
new file mode 100644
index 0000000..4ab9009
--- /dev/null
+++ b/grpc_robot/__init__.py
@@ -0,0 +1,18 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from .dmi_robot import GrpcDmiRobot as Dmi
+from .voltha_robot import GrpcVolthaRobot as Voltha
+from .tools.robot_tools import Collections
+from .tools.dmi_tools import DmiTools
+from .tools.voltha_tools import VolthaTools
diff --git a/grpc_robot/dmi_robot.py b/grpc_robot/dmi_robot.py
new file mode 100644
index 0000000..23950b5
--- /dev/null
+++ b/grpc_robot/dmi_robot.py
@@ -0,0 +1,55 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+import dmi
+
+from robot.api.deco import keyword
+from grpc_robot.grpc_robot import GrpcRobot
+
+
+class GrpcDmiRobot(GrpcRobot):
+    """
+    This library is intended to supported different Protocol Buffer definitions. Precondition is that python files
+    generated from Protocol Buffer files are available in a pip package which must be installed before the library
+    is used.
+
+    | Supported device  | Pip package                 | Pip package version | Library Name   |
+    | dmi               | device-management-interface | 0.9.1               | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.9.2               | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.9.3               | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.9.4               | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.9.5               | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.9.6               | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.9.8               | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.9.9               | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.10.1              | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.10.2              | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 0.12.0              | grpc_robot.Dmi |
+    | dmi               | device-management-interface | 1.0.0               | grpc_robot.Dmi |
+    """
+
+    device = 'dmi'
+    package_name = 'device-management-interface'
+    installed_package = dmi
+
+    def __init__(self, **kwargs):
+        super().__init__(**kwargs)
+
+    @keyword
+    def dmi_version_get(self):
+        """
+        Retrieve the version of the currently used python module _device-management-interface_.
+
+        *Return*: version string consisting of three dot-separated numbers (x.y.z)
+        """
+        return self.pb_version
diff --git a/grpc_robot/grpc_robot.py b/grpc_robot/grpc_robot.py
new file mode 100644
index 0000000..2de6192
--- /dev/null
+++ b/grpc_robot/grpc_robot.py
@@ -0,0 +1,349 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+import os
+import grpc
+import json
+import getpass
+import inspect
+import logging
+import logging.config
+import tempfile
+import textwrap
+import importlib
+import pkg_resources
+
+from .tools.protop import ProtoBufParser
+from distutils.version import StrictVersion
+from robot.api.deco import keyword
+from robot.libraries.BuiltIn import BuiltIn, RobotNotRunningError
+
+
+def _package_version_get(package_name, source=None):
+    """
+    Returns the installed version number for the given pip package with name _package_name_.
+    """
+
+    if source:
+        head, tail = os.path.split(os.path.dirname(os.path.abspath(source)))
+
+        while tail:
+            try:
+                with open(os.path.join(head, 'VERSION')) as version_file:
+                    return version_file.read().strip()
+            except Exception:
+                head, tail = os.path.split(head)
+
+    try:
+        return pkg_resources.get_distribution(package_name).version
+    except pkg_resources.DistributionNotFound:
+        raise NameError("Package '%s' is not installed!" % package_name)
+
+
+class GrpcRobot(object):
+
+    device = None
+    package_name = ''
+    installed_package = None
+
+    try:
+        ROBOT_LIBRARY_VERSION = _package_version_get('grpc_robot')
+    except NameError:
+        ROBOT_LIBRARY_VERSION = 'unknown'
+
+    ROBOT_LIBRARY_SCOPE = 'TEST_SUITE'
+    global_init = 0
+    global_timeout = 120
+    min_robot_version = 30202
+
+    connection_type = 'grpc'
+
+    def __init__(self, **kwargs):
+        super().__init__()
+
+        self._host = None
+        self._port = None
+
+        self.grpc_channel = None
+        self.timeout = 30
+        self.protobuf = None
+
+        self.keywords = {}
+
+        self.enable_logging()
+        self.logger = logging.getLogger('grpc')
+
+        self.pb_version = self.get_installed_version() or self.get_latest_pb_version()
+        self.load_services(self.pb_version)
+
+    @staticmethod
+    def enable_logging():
+
+        try:
+            log_dir = BuiltIn().replace_variables('${OUTPUT_DIR}')
+        except RobotNotRunningError:
+            log_dir = tempfile.gettempdir()
+
+        try:
+            logfile_name = os.path.join(log_dir, 'grpc_robot_%s.log' % getpass.getuser())
+        except KeyError:
+            logfile_name = os.path.join(log_dir, 'grpc_robot.log')
+
+        logging.config.dictConfig({
+            'version': 1,
+            'disable_existing_loggers': False,
+
+            'formatters': {
+                'standard': {
+                    'format': '%(asctime)s %(name)s [%(levelname)s] : %(message)s'
+                },
+            },
+            'handlers': {
+                'file': {
+                    'level': 'DEBUG',
+                    'class': 'logging.FileHandler',
+                    'mode': 'a',
+                    'filename': logfile_name,
+                    'formatter': 'standard'
+                },
+            },
+            'loggers': {
+                'grpc': {
+                    'handlers': ['file'],
+                    'level': 'DEBUG',
+                    'propagate': True
+                },
+            }
+        })
+
+    @staticmethod
+    def get_modules(*modules):
+        module_list = []
+        for module in modules:
+            for name, obj in inspect.getmembers(module, predicate=lambda o: inspect.isclass(o)):
+                module_list.append(obj)
+
+        return module_list
+
+    @staticmethod
+    def get_keywords_from_modules(*modules):
+        keywords = {}
+
+        for module in modules:
+            for name, obj in inspect.getmembers(module):
+                if hasattr(obj, 'robot_name'):
+                    keywords[name] = module
+
+        return keywords
+
+    def get_installed_version(self):
+        dists = [str(d).split() for d in pkg_resources.working_set if str(d).split()[0] == self.package_name]
+
+        try:
+            pb_version = dists[0][-1]
+            self.logger.info('installed package %s==%s' % (self.package_name, pb_version))
+        except IndexError:
+            self.logger.error('package for %s not installed' % self.package_name)
+            return None
+
+        if pb_version not in self.get_supported_versions():
+            self.logger.warning('installed package %s==%s not supported by library, using version %s' % (
+                self.package_name, pb_version, self.get_latest_pb_version()))
+            pb_version = None
+
+        return pb_version
+
+    def get_supported_versions(self):
+
+        path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'services', self.device)
+
+        return sorted([
+            (name.split(self.device + '_')[1]).replace('_', '.')
+            for name in os.listdir(path)
+            if os.path.isdir(os.path.join(path, name)) and name.startswith(self.device)
+        ], key=StrictVersion)
+
+    def get_latest_pb_version(self):
+        return self.get_supported_versions()[-1]
+
+    def load_services(self, pb_version):
+        pb_version = pb_version.replace('.', '_')
+        path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'services', self.device, '%s_%s' % (self.device, pb_version))
+
+        modules = importlib.import_module('grpc_robot.services.%s.%s_%s' % (self.device, self.device, pb_version))
+
+        module_list = self.get_modules(modules)
+
+        self.keywords = self.get_keywords_from_modules(*module_list)
+
+        try:
+            self.protobuf = json.loads(open(os.path.join(path, '%s.json' % self.device)).read())
+            self.logger.debug('loaded services from %s' % os.path.join(path, '%s.json' % self.device))
+        except FileNotFoundError:
+            pip_dir = os.path.join(os.path.dirname(self.installed_package.__file__), 'protos')
+            self.protobuf = ProtoBufParser(self.device, self.pb_version, pip_dir).parse_files()
+
+    @keyword
+    def get_keyword_names(self):
+        """
+        Returns the list of keyword names
+        """
+        return sorted(list(self.keywords.keys()) + [name for name in dir(self) if hasattr(getattr(self, name), 'robot_name')])
+
+    def run_keyword(self, keyword_name, args, kwargs):
+        """
+        http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#running-keywords
+
+        :param keyword_name: name of method to run
+        :param args: arguments to this method
+        :param kwargs: kwargs
+        :return: whatever the method returns
+        """
+        if keyword_name in self.keywords:
+            c = self.keywords[keyword_name](self)
+        else:
+            c = self
+
+        return getattr(c, keyword_name)(*args, **kwargs)
+
+    def get_keyword_arguments(self, keyword_name):
+        """
+        http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#getting-keyword-arguments
+
+        :param keyword_name: name of method
+        :return: list of method arguments like in urls above
+        """
+
+        if keyword_name in self.keywords:
+            a = inspect.getargspec(getattr(self.keywords[keyword_name], keyword_name))
+        else:
+            a = inspect.getargspec(getattr(self, keyword_name))
+
+        # skip "self" as first parameter -> [1:]
+        args_without_defaults = a.args[1:-len(a.defaults)] if a.defaults is not None else a.args[1:]
+
+        args_with_defaults = []
+        if a.defaults is not None:
+            args_with_defaults = zip(a.args[-len(a.defaults):], a.defaults)
+            args_with_defaults = ['%s=%s' % (x, y) for x, y in args_with_defaults]
+
+        args = args_without_defaults + args_with_defaults
+
+        if a.varargs is not None:
+            args.append('*%s' % a.varargs)
+
+        if a.keywords is not None:
+            args.append('**%s' % a.keywords)
+
+        return args
+
+    def get_keyword_documentation(self, keyword_name):
+        """
+        http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#getting-keyword-documentation
+        http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#documentation-formatting
+
+        :param keyword_name: name of method to get documentation for
+        :return: string formatted according documentation
+        """
+
+        if keyword_name == '__intro__':
+            return self.__doc__
+
+        doc_string = ''
+
+        if keyword_name in self.keywords:
+            c = self.keywords[keyword_name]
+            doc_string += textwrap.dedent(getattr(c, keyword_name).__doc__ or '') + '\n'
+            doc_string += c(self).get_documentation(keyword_name)  # instanciate class and call "get_documentation"
+            return doc_string
+
+        return textwrap.dedent(getattr(self, keyword_name).__doc__ or '')
+
+    @keyword
+    def connection_open(self, host, port, **kwargs):
+        """
+        Opens a connection to the gRPC host.
+
+        *Parameters*:
+        - host: <string>|<IP address>; Name or IP address of the gRPC host.
+        - port: <number>; TCP port of the gRPC host.
+
+        *Named Parameters*:
+        - timeout: <number>; Timeout in seconds for a gRPC response. Default: 30 s
+        """
+        self._host = host
+        self._port = port
+        self.timeout = int(kwargs.get('timeout', self.timeout))
+
+        channel_options = [
+            ('grpc.keepalive_time_ms', 10000),
+            ('grpc.keepalive_timeout_ms', 5000)
+        ]
+
+        if kwargs.get('insecure', True):
+            self.grpc_channel = grpc.insecure_channel('%s:%s' % (self._host, self._port), options=channel_options)
+        else:
+            raise NotImplementedError('other than "insecure channel" not implemented')
+
+        user_pb_version = kwargs.get('pb_version') or self.pb_version
+        pb_version = user_pb_version  # ToDo: or device_pb_version  # get the pb version from device when available
+
+        self.load_services(pb_version)
+
+    @keyword
+    def connection_close(self):
+        """
+        Closes the connection to the gRPC host.
+        """
+        del self.grpc_channel
+        self.grpc_channel = None
+
+    def _connection_parameters_get(self):
+        return {
+            'timeout': self.timeout
+        }
+
+    @keyword
+    def connection_parameters_set(self, **kwargs):
+        """
+        Sets the gRPC channel connection parameters.
+
+        *Named Parameters*:
+        - timeout: <number>; Timeout in seconds for a gRPC response.
+
+        *Return*: Same dictionary as the keyword _Connection Parameter Get_ with the values before they got changed.
+        """
+        connection_parameters = self._connection_parameters_get()
+
+        self.timeout = int(kwargs.get('timeout', self.timeout))
+
+        return connection_parameters
+
+    @keyword
+    def connection_parameters_get(self):
+        """
+        Retrieves the connection parameters for the gRPC channel.
+
+        *Return*: A dictionary with the keys:
+        - timeout
+        """
+        return self._connection_parameters_get()
+
+    @keyword
+    def library_version_get(self):
+        """
+        Retrieve the version of the currently running library instance.
+
+        *Return*: version string consisting of three dot-separated numbers (x.y.z)
+        """
+        return self.ROBOT_LIBRARY_VERSION
diff --git a/grpc_robot/services/__init__.py b/grpc_robot/services/__init__.py
new file mode 100644
index 0000000..b1ed822
--- /dev/null
+++ b/grpc_robot/services/__init__.py
@@ -0,0 +1,13 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
diff --git a/grpc_robot/services/dmi/__init__.py b/grpc_robot/services/dmi/__init__.py
new file mode 100644
index 0000000..b1ed822
--- /dev/null
+++ b/grpc_robot/services/dmi/__init__.py
@@ -0,0 +1,13 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
diff --git a/grpc_robot/services/dmi/dmi_0_10_1/__init__.py b/grpc_robot/services/dmi/dmi_0_10_1/__init__.py
new file mode 100644
index 0000000..a96b5a5
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_10_1/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_9_9 import *
diff --git a/grpc_robot/services/dmi/dmi_0_10_1/dmi.json b/grpc_robot/services/dmi/dmi_0_10_1/dmi.json
new file mode 100644
index 0000000..98802e6
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_10_1/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INDETERMINATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "DataValueType", "type": "enum", "module": "hw", "values": {"0": "VALUE_TYPE_UNDEFINED", "1": "VALUE_TYPE_OTHER", "2": "VALUE_TYPE_UNKNOWN", "3": "VALUE_TYPE_VOLTS_AC", "4": "VALUE_TYPE_VOLTS_DC", "5": "VALUE_TYPE_AMPERES", "6": "VALUE_TYPE_WATTS", "7": "VALUE_TYPE_HERTZ", "8": "VALUE_TYPE_CELSIUS", "9": "VALUE_TYPE_PERCENT_RH", "10": "VALUE_TYPE_RPM", "11": "VALUE_TYPE_CMM", "12": "VALUE_TYPE_TRUTH_VALUE"}}, {"name": "ValueScale", "type": "enum", "module": "hw", "values": {"0": "VALUE_SCALE_UNDEFINED", "1": "VALUE_SCALE_YOCTO", "2": "VALUE_SCALE_ZEPTO", "3": "VALUE_SCALE_ATTO", "4": "VALUE_SCALE_FEMTO", "5": "VALUE_SCALE_PICO", "6": "VALUE_SCALE_NANO", "7": "VALUE_SCALE_MICRO", "8": "VALUE_SCALE_MILLI", "9": "VALUE_SCALE_UNITS", "10": "VALUE_SCALE_KILO", "11": "VALUE_SCALE_MEGA", "12": "VALUE_SCALE_GIGA", "13": "VALUE_SCALE_TERA", "14": "VALUE_SCALE_PETA", "15": "VALUE_SCALE_EXA", "16": "VALUE_SCALE_ZETTA", "17": "VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "DataValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ConnectorType", "type": "enum", "module": "hw", "values": {"0": "CONNECTOR_TYPE_UNDEFINED", "1": "RJ45", "2": "FIBER_LC", "3": "FIBER_SC_PC", "4": "FIBER_MPO"}}, {"name": "Speed", "type": "enum", "module": "hw", "values": {"0": "SPEED_UNDEFINED", "1": "DYNAMIC", "2": "GIGABIT_1", "3": "GIGABIT_10", "4": "GIGABIT_25", "5": "GIGABIT_40", "6": "GIGABIT_100", "7": "GIGABIT_400", "8": "MEGABIT_2500", "9": "MEGABIT_1250"}}, {"name": "Protocol", "type": "enum", "module": "hw", "values": {"0": "PROTOCOL_UNDEFINED", "1": "ETHERNET", "2": "GPON", "3": "XGPON", "4": "XGSPON", "5": "GFAST", "6": "SERIAL", "7": "EPON"}}, {"name": "PortComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "connector_type", "is_choice": false, "repeated": false, "type": "ConnectorType", "lookup": true}, {"name": "speed", "is_choice": false, "repeated": false, "type": "Speed", "lookup": true}, {"name": "protocol", "is_choice": false, "repeated": false, "type": "Protocol", "lookup": true}, {"name": "physical_label", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ContainerComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "physical_label", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SupportedVoltage", "type": "enum", "module": "hw", "values": {"0": "SUPPORTED_VOLTAGE_UNDEFINED", "1": "V48", "2": "V230", "3": "V115"}}, {"name": "PsuComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "supported_voltage", "is_choice": false, "repeated": false, "type": "SupportedVoltage", "lookup": true}]}, {"name": "FormFactor", "type": "enum", "module": "hw", "values": {"0": "FORM_FACTOR_UNKNOWN", "1": "QSFP", "2": "QSFP_PLUS", "3": "QSFP28", "4": "SFP", "5": "SFP_PLUS", "6": "XFP", "7": "CFP4", "8": "CFP2", "9": "CPAK", "10": "X2", "11": "OTHER", "12": "CFP", "13": "CFP2_ACO", "14": "CFP2_DCO"}}, {"name": "Type", "type": "enum", "module": "hw", "values": {"0": "TYPE_UNKNOWN", "1": "ETHERNET", "2": "GPON", "3": "XGPON", "4": "XGSPON", "5": "CPON", "6": "NG_PON2", "7": "EPON"}}, {"name": "TransceiverComponentsAttributes", "type": "message", "module": "hw", "fields": [{"name": "form_factor", "is_choice": false, "repeated": false, "type": "FormFactor", "lookup": true}, {"name": "trans_type", "is_choice": false, "repeated": false, "type": "Type", "lookup": true}, {"name": "max_distance", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "max_distance_scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}, {"name": "rx_wavelength", "is_choice": false, "repeated": true, "type": "uint32", "lookup": false}, {"name": "tx_wavelength", "is_choice": false, "repeated": true, "type": "uint32", "lookup": false}, {"name": "wavelength_scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}, {"name": "specific", "is_choice": true, "cases": [{"name": "port_attr", "type": "PortComponentAttributes", "lookup": true}, {"name": "container_attr", "type": "ContainerComponentAttributes", "lookup": true}, {"name": "psu_attr", "type": "PsuComponentAttributes", "lookup": true}, {"name": "transceiver_attr", "type": "TransceiverComponentsAttributes", "lookup": true}]}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "last_booted", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "POLL_INTERVAL_UNSUPPORTED", "4": "INVALID_METRIC", "5": "DEVICE_UNREACHABLE"}}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "INVALID_METRIC", "5": "DEVICE_UNREACHABLE"}}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "INVALID_CONFIG", "4": "DEVICE_UNREACHABLE"}}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM", "6": "OPERATION_ALREADY_IN_PROGRESS", "7": "UNKNOWN_DEVICE", "8": "DEVICE_NOT_REACHABLE"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "DEVICE_UNREACHABLE"}}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR", "5": "DEVICE_UNREACHABLE"}}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "DEVICE_ALREADY_MANAGED", "2": "OPERATION_ALREADY_IN_PROGRESS", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR"}}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE"}}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "LOGGING_ENDPOINT_ERROR", "4": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "5": "MSGBUS_ENDPOINT_ERROR", "6": "DEVICE_UNREACHABLE"}}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "INTERNAL_ERROR", "2": "DEVICE_UNREACHABLE"}}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY", "4": "DEVICE_UNREACHABLE"}}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY", "4": "DEVICE_UNREACHABLE"}}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}, {"name": "ConfigRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "ERROR_FETCHING_CONFIG", "4": "INVALID_CONFIG", "5": "OPERATION_ALREADY_IN_PROGRESS", "6": "DEVICE_UNREACHABLE"}}, {"name": "ConfigResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StartupConfigInfoRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "StartupConfigInfoResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "UpdateStartupConfiguration", "request": {"is_stream": false, "type": "ConfigRequest", "lookup": true}, "response": {"is_stream": true, "type": "ConfigResponse", "lookup": true}}, {"name": "GetStartupConfigurationInfo", "request": {"is_stream": false, "type": "StartupConfigInfoRequest", "lookup": true}, "response": {"is_stream": false, "type": "StartupConfigInfoResponse", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_10_2/__init__.py b/grpc_robot/services/dmi/dmi_0_10_2/__init__.py
new file mode 100644
index 0000000..abb0bf7
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_10_2/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_10_1 import *
diff --git a/grpc_robot/services/dmi/dmi_0_10_2/dmi.json b/grpc_robot/services/dmi/dmi_0_10_2/dmi.json
new file mode 100644
index 0000000..98802e6
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_10_2/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INDETERMINATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "DataValueType", "type": "enum", "module": "hw", "values": {"0": "VALUE_TYPE_UNDEFINED", "1": "VALUE_TYPE_OTHER", "2": "VALUE_TYPE_UNKNOWN", "3": "VALUE_TYPE_VOLTS_AC", "4": "VALUE_TYPE_VOLTS_DC", "5": "VALUE_TYPE_AMPERES", "6": "VALUE_TYPE_WATTS", "7": "VALUE_TYPE_HERTZ", "8": "VALUE_TYPE_CELSIUS", "9": "VALUE_TYPE_PERCENT_RH", "10": "VALUE_TYPE_RPM", "11": "VALUE_TYPE_CMM", "12": "VALUE_TYPE_TRUTH_VALUE"}}, {"name": "ValueScale", "type": "enum", "module": "hw", "values": {"0": "VALUE_SCALE_UNDEFINED", "1": "VALUE_SCALE_YOCTO", "2": "VALUE_SCALE_ZEPTO", "3": "VALUE_SCALE_ATTO", "4": "VALUE_SCALE_FEMTO", "5": "VALUE_SCALE_PICO", "6": "VALUE_SCALE_NANO", "7": "VALUE_SCALE_MICRO", "8": "VALUE_SCALE_MILLI", "9": "VALUE_SCALE_UNITS", "10": "VALUE_SCALE_KILO", "11": "VALUE_SCALE_MEGA", "12": "VALUE_SCALE_GIGA", "13": "VALUE_SCALE_TERA", "14": "VALUE_SCALE_PETA", "15": "VALUE_SCALE_EXA", "16": "VALUE_SCALE_ZETTA", "17": "VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "DataValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ConnectorType", "type": "enum", "module": "hw", "values": {"0": "CONNECTOR_TYPE_UNDEFINED", "1": "RJ45", "2": "FIBER_LC", "3": "FIBER_SC_PC", "4": "FIBER_MPO"}}, {"name": "Speed", "type": "enum", "module": "hw", "values": {"0": "SPEED_UNDEFINED", "1": "DYNAMIC", "2": "GIGABIT_1", "3": "GIGABIT_10", "4": "GIGABIT_25", "5": "GIGABIT_40", "6": "GIGABIT_100", "7": "GIGABIT_400", "8": "MEGABIT_2500", "9": "MEGABIT_1250"}}, {"name": "Protocol", "type": "enum", "module": "hw", "values": {"0": "PROTOCOL_UNDEFINED", "1": "ETHERNET", "2": "GPON", "3": "XGPON", "4": "XGSPON", "5": "GFAST", "6": "SERIAL", "7": "EPON"}}, {"name": "PortComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "connector_type", "is_choice": false, "repeated": false, "type": "ConnectorType", "lookup": true}, {"name": "speed", "is_choice": false, "repeated": false, "type": "Speed", "lookup": true}, {"name": "protocol", "is_choice": false, "repeated": false, "type": "Protocol", "lookup": true}, {"name": "physical_label", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ContainerComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "physical_label", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SupportedVoltage", "type": "enum", "module": "hw", "values": {"0": "SUPPORTED_VOLTAGE_UNDEFINED", "1": "V48", "2": "V230", "3": "V115"}}, {"name": "PsuComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "supported_voltage", "is_choice": false, "repeated": false, "type": "SupportedVoltage", "lookup": true}]}, {"name": "FormFactor", "type": "enum", "module": "hw", "values": {"0": "FORM_FACTOR_UNKNOWN", "1": "QSFP", "2": "QSFP_PLUS", "3": "QSFP28", "4": "SFP", "5": "SFP_PLUS", "6": "XFP", "7": "CFP4", "8": "CFP2", "9": "CPAK", "10": "X2", "11": "OTHER", "12": "CFP", "13": "CFP2_ACO", "14": "CFP2_DCO"}}, {"name": "Type", "type": "enum", "module": "hw", "values": {"0": "TYPE_UNKNOWN", "1": "ETHERNET", "2": "GPON", "3": "XGPON", "4": "XGSPON", "5": "CPON", "6": "NG_PON2", "7": "EPON"}}, {"name": "TransceiverComponentsAttributes", "type": "message", "module": "hw", "fields": [{"name": "form_factor", "is_choice": false, "repeated": false, "type": "FormFactor", "lookup": true}, {"name": "trans_type", "is_choice": false, "repeated": false, "type": "Type", "lookup": true}, {"name": "max_distance", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "max_distance_scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}, {"name": "rx_wavelength", "is_choice": false, "repeated": true, "type": "uint32", "lookup": false}, {"name": "tx_wavelength", "is_choice": false, "repeated": true, "type": "uint32", "lookup": false}, {"name": "wavelength_scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}, {"name": "specific", "is_choice": true, "cases": [{"name": "port_attr", "type": "PortComponentAttributes", "lookup": true}, {"name": "container_attr", "type": "ContainerComponentAttributes", "lookup": true}, {"name": "psu_attr", "type": "PsuComponentAttributes", "lookup": true}, {"name": "transceiver_attr", "type": "TransceiverComponentsAttributes", "lookup": true}]}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "last_booted", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "POLL_INTERVAL_UNSUPPORTED", "4": "INVALID_METRIC", "5": "DEVICE_UNREACHABLE"}}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "INVALID_METRIC", "5": "DEVICE_UNREACHABLE"}}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "INVALID_CONFIG", "4": "DEVICE_UNREACHABLE"}}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM", "6": "OPERATION_ALREADY_IN_PROGRESS", "7": "UNKNOWN_DEVICE", "8": "DEVICE_NOT_REACHABLE"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "DEVICE_UNREACHABLE"}}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR", "5": "DEVICE_UNREACHABLE"}}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "DEVICE_ALREADY_MANAGED", "2": "OPERATION_ALREADY_IN_PROGRESS", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR"}}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE"}}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "LOGGING_ENDPOINT_ERROR", "4": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "5": "MSGBUS_ENDPOINT_ERROR", "6": "DEVICE_UNREACHABLE"}}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "INTERNAL_ERROR", "2": "DEVICE_UNREACHABLE"}}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY", "4": "DEVICE_UNREACHABLE"}}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY", "4": "DEVICE_UNREACHABLE"}}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}, {"name": "ConfigRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "ERROR_FETCHING_CONFIG", "4": "INVALID_CONFIG", "5": "OPERATION_ALREADY_IN_PROGRESS", "6": "DEVICE_UNREACHABLE"}}, {"name": "ConfigResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StartupConfigInfoRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "StartupConfigInfoResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "UpdateStartupConfiguration", "request": {"is_stream": false, "type": "ConfigRequest", "lookup": true}, "response": {"is_stream": true, "type": "ConfigResponse", "lookup": true}}, {"name": "GetStartupConfigurationInfo", "request": {"is_stream": false, "type": "StartupConfigInfoRequest", "lookup": true}, "response": {"is_stream": false, "type": "StartupConfigInfoResponse", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_12_0/__init__.py b/grpc_robot/services/dmi/dmi_0_12_0/__init__.py
new file mode 100644
index 0000000..64c6f44
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_12_0/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_10_2 import *
diff --git a/grpc_robot/services/dmi/dmi_0_12_0/dmi.json b/grpc_robot/services/dmi/dmi_0_12_0/dmi.json
new file mode 100644
index 0000000..3f5918c
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_12_0/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INDETERMINATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "DataValueType", "type": "enum", "module": "hw", "values": {"0": "VALUE_TYPE_UNDEFINED", "1": "VALUE_TYPE_OTHER", "2": "VALUE_TYPE_UNKNOWN", "3": "VALUE_TYPE_VOLTS_AC", "4": "VALUE_TYPE_VOLTS_DC", "5": "VALUE_TYPE_AMPERES", "6": "VALUE_TYPE_WATTS", "7": "VALUE_TYPE_HERTZ", "8": "VALUE_TYPE_CELSIUS", "9": "VALUE_TYPE_PERCENT_RH", "10": "VALUE_TYPE_RPM", "11": "VALUE_TYPE_CMM", "12": "VALUE_TYPE_TRUTH_VALUE", "13": "VALUE_TYPE_PERCENT", "14": "VALUE_TYPE_METERS", "15": "VALUE_TYPE_BYTES"}}, {"name": "ValueScale", "type": "enum", "module": "hw", "values": {"0": "VALUE_SCALE_UNDEFINED", "1": "VALUE_SCALE_YOCTO", "2": "VALUE_SCALE_ZEPTO", "3": "VALUE_SCALE_ATTO", "4": "VALUE_SCALE_FEMTO", "5": "VALUE_SCALE_PICO", "6": "VALUE_SCALE_NANO", "7": "VALUE_SCALE_MICRO", "8": "VALUE_SCALE_MILLI", "9": "VALUE_SCALE_UNITS", "10": "VALUE_SCALE_KILO", "11": "VALUE_SCALE_MEGA", "12": "VALUE_SCALE_GIGA", "13": "VALUE_SCALE_TERA", "14": "VALUE_SCALE_PETA", "15": "VALUE_SCALE_EXA", "16": "VALUE_SCALE_ZETTA", "17": "VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "DataValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ConnectorType", "type": "enum", "module": "hw", "values": {"0": "CONNECTOR_TYPE_UNDEFINED", "1": "RJ45", "2": "FIBER_LC", "3": "FIBER_SC_PC", "4": "FIBER_MPO", "5": "RS232"}}, {"name": "Speed", "type": "enum", "module": "hw", "values": {"0": "SPEED_UNDEFINED", "1": "DYNAMIC", "2": "GIGABIT_1", "3": "GIGABIT_10", "4": "GIGABIT_25", "5": "GIGABIT_40", "6": "GIGABIT_100", "7": "GIGABIT_400", "8": "MEGABIT_2500", "9": "MEGABIT_1250"}}, {"name": "Protocol", "type": "enum", "module": "hw", "values": {"0": "PROTOCOL_UNDEFINED", "1": "ETHERNET", "2": "GPON", "3": "XGPON", "4": "XGSPON", "5": "GFAST", "6": "SERIAL", "7": "EPON", "8": "BITS"}}, {"name": "PortComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "connector_type", "is_choice": false, "repeated": false, "type": "ConnectorType", "lookup": true}, {"name": "speed", "is_choice": false, "repeated": false, "type": "Speed", "lookup": true}, {"name": "protocol", "is_choice": false, "repeated": false, "type": "Protocol", "lookup": true}, {"name": "physical_label", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ContainerComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "physical_label", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SupportedVoltage", "type": "enum", "module": "hw", "values": {"0": "SUPPORTED_VOLTAGE_UNDEFINED", "1": "V48", "2": "V230", "3": "V115"}}, {"name": "PsuComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "supported_voltage", "is_choice": false, "repeated": false, "type": "SupportedVoltage", "lookup": true}]}, {"name": "FormFactor", "type": "enum", "module": "hw", "values": {"0": "FORM_FACTOR_UNKNOWN", "1": "QSFP", "2": "QSFP_PLUS", "3": "QSFP28", "4": "SFP", "5": "SFP_PLUS", "6": "XFP", "7": "CFP4", "8": "CFP2", "9": "CPAK", "10": "X2", "11": "OTHER", "12": "CFP", "13": "CFP2_ACO", "14": "CFP2_DCO"}}, {"name": "Type", "type": "enum", "module": "hw", "values": {"0": "TYPE_UNKNOWN", "1": "ETHERNET", "2": "GPON", "3": "XGPON", "4": "XGSPON", "5": "CPON", "6": "NG_PON2", "7": "EPON"}}, {"name": "TransceiverComponentsAttributes", "type": "message", "module": "hw", "fields": [{"name": "form_factor", "is_choice": false, "repeated": false, "type": "FormFactor", "lookup": true}, {"name": "trans_type", "is_choice": false, "repeated": false, "type": "Type", "lookup": true}, {"name": "max_distance", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "max_distance_scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}, {"name": "rx_wavelength", "is_choice": false, "repeated": true, "type": "uint32", "lookup": false}, {"name": "tx_wavelength", "is_choice": false, "repeated": true, "type": "uint32", "lookup": false}, {"name": "wavelength_scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}, {"name": "specific", "is_choice": true, "cases": [{"name": "port_attr", "type": "PortComponentAttributes", "lookup": true}, {"name": "container_attr", "type": "ContainerComponentAttributes", "lookup": true}, {"name": "psu_attr", "type": "PsuComponentAttributes", "lookup": true}, {"name": "transceiver_attr", "type": "TransceiverComponentsAttributes", "lookup": true}]}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "last_booted", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "POLL_INTERVAL_UNSUPPORTED", "4": "INVALID_METRIC", "5": "DEVICE_UNREACHABLE"}}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "INVALID_METRIC", "5": "DEVICE_UNREACHABLE"}}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "INVALID_CONFIG", "4": "DEVICE_UNREACHABLE"}}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM", "6": "OPERATION_ALREADY_IN_PROGRESS", "7": "UNKNOWN_DEVICE", "8": "DEVICE_NOT_REACHABLE"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "DEVICE_UNREACHABLE"}}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR", "5": "DEVICE_UNREACHABLE"}}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "DEVICE_ALREADY_MANAGED", "2": "OPERATION_ALREADY_IN_PROGRESS", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR"}}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE"}}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "LOGGING_ENDPOINT_ERROR", "4": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "5": "MSGBUS_ENDPOINT_ERROR", "6": "DEVICE_UNREACHABLE"}}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "INTERNAL_ERROR", "2": "DEVICE_UNREACHABLE"}}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY", "4": "DEVICE_UNREACHABLE"}}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY", "4": "DEVICE_UNREACHABLE"}}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}, {"name": "ConfigRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "ERROR_FETCHING_CONFIG", "4": "INVALID_CONFIG", "5": "OPERATION_ALREADY_IN_PROGRESS", "6": "DEVICE_UNREACHABLE"}}, {"name": "ConfigResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StartupConfigInfoRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "StartupConfigInfoResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "UpdateStartupConfiguration", "request": {"is_stream": false, "type": "ConfigRequest", "lookup": true}, "response": {"is_stream": true, "type": "ConfigResponse", "lookup": true}}, {"name": "GetStartupConfigurationInfo", "request": {"is_stream": false, "type": "StartupConfigInfoRequest", "lookup": true}, "response": {"is_stream": false, "type": "StartupConfigInfoResponse", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_9_1/__init__.py b/grpc_robot/services/dmi/dmi_0_9_1/__init__.py
new file mode 100644
index 0000000..9e78f73
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_1/__init__.py
@@ -0,0 +1,17 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from .hw_events_mgmt_service import *
+from .hw_management_service import *
+from .hw_metrics_mgmt_service import *
+from .sw_management_service import *
diff --git a/grpc_robot/services/dmi/dmi_0_9_1/dmi.json b/grpc_robot/services/dmi/dmi_0_9_1/dmi.json
new file mode 100644
index 0000000..84a0d71
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_1/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": ["UNDEFINED_STATUS", "OK", "ERROR"]}, {"name": "Reason", "type": "enum", "module": "commons", "values": ["UNDEFINED_REASON", "UNKNOWN_DEVICE", "INTERNAL_ERROR", "WRONG_METRIC", "WRONG_EVENT", "LOGGING_ENDPOINT_ERROR", "LOGGING_ENDPOINT_PROTOCOL_ERROR", "KAFKA_ENDPOINT_ERROR"]}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": ["COMPONENT_TYPE_UNDEFINED", "COMPONENT_TYPE_UNKNOWN", "COMPONENT_TYPE_CHASSIS", "COMPONENT_TYPE_BACKPLANE", "COMPONENT_TYPE_CONTAINER", "COMPONENT_TYPE_POWER_SUPPLY", "COMPONENT_TYPE_FAN", "COMPONENT_TYPE_SENSOR", "COMPONENT_TYPE_MODULE", "COMPONENT_TYPE_PORT", "COMPONENT_TYPE_CPU", "COMPONENT_TYPE_BATTERY", "COMPONENT_TYPE_STORAGE", "COMPONENT_TYPE_MEMORY", "COMPONENT_TYPE_TRANSCEIVER", "COMPONENT_TYPE_GPON_TRANSCEIVER", "COMPONENT_TYPE_XGS_PON_TRANSCEIVER"]}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": ["COMP_ADMIN_STATE_UNDEFINED", "COMP_ADMIN_STATE_UNKNOWN", "COMP_ADMIN_STATE_LOCKED", "COMP_ADMIN_STATE_SHUTTING_DOWN", "COMP_ADMIN_STATE_UNLOCKED"]}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": ["COMP_OPER_STATE_UNDEFINED", "COMP_OPER_STATE_UNKNOWN", "COMP_OPER_STATE_DISABLED", "COMP_OPER_STATE_ENABLED", "COMP_OPER_STATE_TESTING"]}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": ["COMP_USAGE_STATE_UNDEFINED", "COMP_USAGE_STATE_UNKNOWN", "COMP_USAGE_STATE_IDLE", "COMP_USAGE_STATE_ACTIVE", "COMP_USAGE_STATE_BUSY"]}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": ["COMP_ALARM_STATE_UNDEFINED", "COMP_ALARM_STATE_UNKNOWN", "COMP_ALARM_STATE_UNDER_REPAIR", "COMP_ALARM_STATE_CRITICAL", "COMP_ALARM_STATE_MAJOR", "COMP_ALARM_STATE_MINOR", "COMP_ALARM_STATE_WARNING", "COMP_ALARM_STATE_INTERMEDIATE"]}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": ["COMP_STANDBY_STATE_UNDEFINED", "COMP_STANDBY_STATE_UNKNOWN", "COMP_STANDBY_STATE_HOT", "COMP_STANDBY_STATE_COLD", "COMP_STANDBY_STATE_PROVIDING_SERVICE"]}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "SensorValueType", "type": "enum", "module": "hw", "values": ["SENSOR_VALUE_TYPE_UNDEFINED", "SENSOR_VALUE_TYPE_OTHER", "SENSOR_VALUE_TYPE_UNKNOWN", "SENSOR_VALUE_TYPE_VOLTS_AC", "SENSOR_VALUE_TYPE_VOLTS_DC", "SENSOR_VALUE_TYPE_AMPERES", "SENSOR_VALUE_TYPE_WATTS", "SENSOR_VALUE_TYPE_HERTZ", "SENSOR_VALUE_TYPE_CELSIUS", "SENSOR_VALUE_TYPE_PERCENT_RH", "SENSOR_VALUE_TYPE_RPM", "SENSOR_VALUE_TYPE_CMM", "SENSOR_VALUE_TYPE_TRUTH_VALUE"]}, {"name": "SensorValueScale", "type": "enum", "module": "hw", "values": ["SENSOR_VALUE_SCALE_UNDEFINED", "SENSOR_VALUE_SCALE_YOCTO", "SENSOR_VALUE_SCALE_ZEPTO", "SENSOR_VALUE_SCALE_ATTO", "SENSOR_VALUE_SCALE_FEMTO", "SENSOR_VALUE_SCALE_PICO", "SENSOR_VALUE_SCALE_NANO", "SENSOR_VALUE_SCALE_MICRO", "SENSOR_VALUE_SCALE_MILLI", "SENSOR_VALUE_SCALE_UNITS", "SENSOR_VALUE_SCALE_KILO", "SENSOR_VALUE_SCALE_MEGA", "SENSOR_VALUE_SCALE_GIGA", "SENSOR_VALUE_SCALE_TERA", "SENSOR_VALUE_SCALE_PETA", "SENSOR_VALUE_SCALE_EXA", "SENSOR_VALUE_SCALE_ZETTA", "SENSOR_VALUE_SCALE_YOTTA"]}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": ["SENSOR_STATUS_UNDEFINED", "SENSOR_STATUS_OK", "SENSOR_STATUS_UNAVAILABLE", "SENSOR_STATUS_NONOPERATIONAL"]}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "SensorValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "SensorValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": ["METRIC_NAME_UNDEFINED", "METRIC_FAN_SPEED", "METRIC_CPU_TEMP", "METRIC_CPU_USAGE_PERCENTAGE", "METRIC_TRANSCEIVER_TEMP", "METRIC_TRANSCEIVER_VOLTAGE", "METRIC_TRANSCEIVER_BIAS", "METRIC_TRANSCEIVER_RX_POWER", "METRIC_TRANSCEIVER_TX_POWER", "METRIC_TRANSCEIVER_WAVELENGTH", "METRIC_DISK_TEMP", "METRIC_DISK_CAPACITY", "METRIC_DISK_USAGE", "METRIC_DISK_USAGE_PERCENTAGE", "METRIC_DISK_READ_WRITE_PERCENTAGE", "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "METRIC_RAM_TEMP", "METRIC_RAM_CAPACITY", "METRIC_RAM_USAGE", "METRIC_RAM_USAGE_PERCENTAGE", "METRIC_POWER_MAX", "METRIC_POWER_USAGE", "METRIC_POWER_USAGE_PERCENTAGE", "METRIC_INNER_SURROUNDING_TEMP"]}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": ["EVENT_NAME_UNDEFINED", "EVENT_TRANSCEIVER_PLUG_OUT", "EVENT_TRANSCEIVER_PLUG_IN", "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "EVENT_TRANSCEIVER_FAILURE", "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "EVENT_PSU_PLUG_OUT", "EVENT_PSU_PLUG_IN", "EVENT_PSU_FAILURE", "EVENT_PSU_FAILURE_RECOVERED", "EVENT_FAN_FAILURE", "EVENT_FAN_PLUG_OUT", "EVENT_FAN_PLUG_IN", "EVENT_FAN_FAILURE_RECOVERED", "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "EVENT_HW_DEVICE_RESET", "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"]}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": ["UNDEFINED_STATE", "COPYING_IMAGE", "INSTALLING_IMAGE", "COMMITTING_IMAGE", "REBOOTING_DEVICE", "UPGRADE_COMPLETE", "UPGRADE_FAILED", "ACTIVATION_COMPLETE", "ACTIVATION_FAILED"]}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": ["UNDEFINED_REASON", "ERROR_IN_REQUEST", "INTERNAL_ERROR", "DEVICE_IN_WRONG_STATE", "INVALID_IMAGE", "WRONG_IMAGE_CHECKSUM"]}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "Uuid", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_9_1/hw_events_mgmt_service.py b/grpc_robot/services/dmi/dmi_0_9_1/hw_events_mgmt_service.py
new file mode 100644
index 0000000..26c1cfe
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_1/hw_events_mgmt_service.py
@@ -0,0 +1,38 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import hw_events_mgmt_service_pb2_grpc, hw_events_mgmt_service_pb2, hw_pb2
+
+
+class NativeEventsManagementService(Service):
+
+    prefix = 'hw_event_mgmt_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=hw_events_mgmt_service_pb2_grpc.NativeEventsManagementServiceStub)
+
+    # rpc ListEvents(HardwareID) returns(ListEventsResponse);
+    @keyword
+    @is_connected
+    def hw_event_mgmt_service_list_events(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListEvents, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc UpdateEventsConfiguration(EventsConfigurationRequest) returns(EventsConfigurationResponse);
+    @keyword
+    @is_connected
+    def hw_event_mgmt_service_update_events_configuration(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateEventsConfiguration, hw_events_mgmt_service_pb2.EventsConfigurationRequest, param_dict, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_0_9_1/hw_management_service.py b/grpc_robot/services/dmi/dmi_0_9_1/hw_management_service.py
new file mode 100644
index 0000000..8d85b99
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_1/hw_management_service.py
@@ -0,0 +1,81 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import hw_management_service_pb2_grpc, hw_management_service_pb2, hw_pb2
+
+
+class NativeHWManagementService(Service):
+
+    prefix = 'hw_management_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=hw_management_service_pb2_grpc.NativeHWManagementServiceStub)
+
+    @keyword
+    @is_connected
+    def hw_management_service_start_managing_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StartManagingDevice, hw_pb2.ModifiableComponent, param_dict, **kwargs)
+
+    @keyword
+    @is_connected
+    def hw_management_service_stop_managing_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StopManagingDevice, hw_management_service_pb2.StopManagingDeviceRequest, param_dict, **kwargs)
+
+    @keyword
+    @is_connected
+    def hw_management_service_get_physical_inventory(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetPhysicalInventory, hw_management_service_pb2.PhysicalInventoryRequest, param_dict, **kwargs)
+
+    @keyword
+    @is_connected
+    def hw_management_service_get_hw_component_info(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetHWComponentInfo, hw_management_service_pb2.HWComponentInfoGetRequest, param_dict, **kwargs)
+
+    @keyword
+    @is_connected
+    def hw_management_service_set_hw_component_info(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetHWComponentInfo, hw_management_service_pb2.HWComponentInfoSetRequest, param_dict, **kwargs)
+
+    # rpc GetManagedDevices(google.protobuf.Empty) returns(ManagedDevicesResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_managed_devices(self, **kwargs):
+        return self._grpc_helper(self.stub.GetManagedDevices, hw_management_service_pb2.ManagedDevicesResponse, **kwargs)
+
+    # rpc SetLoggingEndpoint(SetLoggingEndpointRequest) returns(SetRemoteEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_logging_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetLoggingEndpoint, hw_management_service_pb2.SetLoggingEndpointRequest, param_dict, **kwargs)
+
+    # rpc GetLoggingEndpoint(Uuid) returns(GetLoggingEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_logging_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLoggingEndpoint, hw_pb2.Uuid, param_dict, **kwargs)
+
+    # rpc SetMsgBusEndpoint(SetMsgBusEndpointRequest) returns(SetRemoteEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_msg_bus_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetMsgBusEndpoint, hw_management_service_pb2.SetMsgBusEndpointRequest, param_dict, **kwargs)
+
+    # rpc GetMsgBusEndpoint(google.protobuf.Empty) returns(GetMsgBusEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_msg_bus_endpoint(self, **kwargs):
+        return self._grpc_helper(self.stub.GetMsgBusEndpoint, hw_management_service_pb2.GetMsgBusEndpointResponse, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_0_9_1/hw_metrics_mgmt_service.py b/grpc_robot/services/dmi/dmi_0_9_1/hw_metrics_mgmt_service.py
new file mode 100644
index 0000000..0fb8940
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_1/hw_metrics_mgmt_service.py
@@ -0,0 +1,44 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import hw_metrics_mgmt_service_pb2_grpc, hw_metrics_mgmt_service_pb2, hw_pb2
+
+
+class NativeMetricsManagementService(Service):
+
+    prefix = 'hw_metrics_mgmt_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=hw_metrics_mgmt_service_pb2_grpc.NativeMetricsManagementServiceStub)
+
+    # rpc ListMetrics(HardwareID) returns(ListMetricsResponse);
+    @keyword
+    @is_connected
+    def hw_metrics_mgmt_service_list_metrics(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListMetrics, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc UpdateMetricsConfiguration(MetricsConfigurationRequest) returns(MetricsConfigurationResponse);
+    @keyword
+    @is_connected
+    def hw_metrics_mgmt_service_update_metrics_configuration(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateMetricsConfiguration, hw_metrics_mgmt_service_pb2.MetricsConfigurationRequest, param_dict, **kwargs)
+
+    # rpc GetMetric(GetMetricRequest) returns(GetMetricResponse);
+    @keyword
+    @is_connected
+    def hw_metrics_mgmt_service_get_metric(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetMetric, hw_metrics_mgmt_service_pb2.GetMetricRequest, param_dict, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_0_9_1/sw_management_service.py b/grpc_robot/services/dmi/dmi_0_9_1/sw_management_service.py
new file mode 100644
index 0000000..e844b23
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_1/sw_management_service.py
@@ -0,0 +1,46 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import sw_management_service_pb2_grpc, sw_management_service_pb2, hw_pb2
+
+
+class NativeSoftwareManagementService(Service):
+
+    prefix = 'sw_management_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=sw_management_service_pb2_grpc.NativeSoftwareManagementServiceStub)
+
+    @keyword
+    @is_connected
+    def sw_management_service_get_software_version(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetSoftwareVersion, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    @keyword
+    @is_connected
+    def sw_management_service_download_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DownloadImage, sw_management_service_pb2.DownloadImageRequest, param_dict, **kwargs)
+
+    @keyword
+    @is_connected
+    def sw_management_service_activate_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ActivateImage, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    @keyword
+    @is_connected
+    def sw_management_service_revert_to_standby_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.RevertToStandbyImage, hw_pb2.HardwareID, param_dict, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_0_9_2/__init__.py b/grpc_robot/services/dmi/dmi_0_9_2/__init__.py
new file mode 100644
index 0000000..789917d
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_2/__init__.py
@@ -0,0 +1,17 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_9_1.hw_events_mgmt_service import *
+from ..dmi_0_9_1.hw_metrics_mgmt_service import *
+from ..dmi_0_9_1.sw_management_service import *
+from .hw_management_service import *
diff --git a/grpc_robot/services/dmi/dmi_0_9_2/dmi.json b/grpc_robot/services/dmi/dmi_0_9_2/dmi.json
new file mode 100644
index 0000000..14850b9
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_2/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "Reason", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "WRONG_METRIC", "4": "WRONG_EVENT", "5": "LOGGING_ENDPOINT_ERROR", "6": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "7": "KAFKA_ENDPOINT_ERROR"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER", "15": "COMPONENT_TYPE_GPON_TRANSCEIVER", "16": "COMPONENT_TYPE_XGS_PON_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INTERMEDIATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "SensorValueType", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_TYPE_UNDEFINED", "1": "SENSOR_VALUE_TYPE_OTHER", "2": "SENSOR_VALUE_TYPE_UNKNOWN", "3": "SENSOR_VALUE_TYPE_VOLTS_AC", "4": "SENSOR_VALUE_TYPE_VOLTS_DC", "5": "SENSOR_VALUE_TYPE_AMPERES", "6": "SENSOR_VALUE_TYPE_WATTS", "7": "SENSOR_VALUE_TYPE_HERTZ", "8": "SENSOR_VALUE_TYPE_CELSIUS", "9": "SENSOR_VALUE_TYPE_PERCENT_RH", "10": "SENSOR_VALUE_TYPE_RPM", "11": "SENSOR_VALUE_TYPE_CMM", "12": "SENSOR_VALUE_TYPE_TRUTH_VALUE"}}, {"name": "SensorValueScale", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_SCALE_UNDEFINED", "1": "SENSOR_VALUE_SCALE_YOCTO", "2": "SENSOR_VALUE_SCALE_ZEPTO", "3": "SENSOR_VALUE_SCALE_ATTO", "4": "SENSOR_VALUE_SCALE_FEMTO", "5": "SENSOR_VALUE_SCALE_PICO", "6": "SENSOR_VALUE_SCALE_NANO", "7": "SENSOR_VALUE_SCALE_MICRO", "8": "SENSOR_VALUE_SCALE_MILLI", "9": "SENSOR_VALUE_SCALE_UNITS", "10": "SENSOR_VALUE_SCALE_KILO", "11": "SENSOR_VALUE_SCALE_MEGA", "12": "SENSOR_VALUE_SCALE_GIGA", "13": "SENSOR_VALUE_SCALE_TERA", "14": "SENSOR_VALUE_SCALE_PETA", "15": "SENSOR_VALUE_SCALE_EXA", "16": "SENSOR_VALUE_SCALE_ZETTA", "17": "SENSOR_VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "SensorValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "SensorValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "responses", "is_choice": false, "repeated": true, "type": "DeviceLogResponse", "lookup": true}]}, {"name": "DeviceLogResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "Uuid", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_9_2/hw_management_service.py b/grpc_robot/services/dmi/dmi_0_9_2/hw_management_service.py
new file mode 100644
index 0000000..f275851
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_2/hw_management_service.py
@@ -0,0 +1,104 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from ...service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import hw_management_service_pb2_grpc, hw_management_service_pb2, hw_pb2
+
+
+class NativeHWManagementService(Service):
+
+    prefix = 'hw_management_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=hw_management_service_pb2_grpc.NativeHWManagementServiceStub)
+
+    # rpc StartManagingDevice(ModifiableComponent) returns(stream StartManagingDeviceResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_start_managing_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StartManagingDevice, hw_pb2.ModifiableComponent, param_dict, **kwargs)
+
+    # rpc StopManagingDevice(StopManagingDeviceRequest) returns(StopManagingDeviceResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_stop_managing_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StopManagingDevice, hw_management_service_pb2.StopManagingDeviceRequest, param_dict, **kwargs)
+
+    # rpc GetPhysicalInventory(PhysicalInventoryRequest) returns(stream PhysicalInventoryResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_physical_inventory(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetPhysicalInventory, hw_management_service_pb2.PhysicalInventoryRequest, param_dict, **kwargs)
+
+    # rpc GetHWComponentInfo(HWComponentInfoGetRequest) returns(stream HWComponentInfoGetResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_hw_component_info(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetHWComponentInfo, hw_management_service_pb2.HWComponentInfoGetRequest, param_dict, **kwargs)
+
+    # rpc SetHWComponentInfo(HWComponentInfoSetRequest) returns(HWComponentInfoSetResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_hw_component_info(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetHWComponentInfo, hw_management_service_pb2.HWComponentInfoSetRequest, param_dict, **kwargs)
+
+    # rpc GetManagedDevices(google.protobuf.Empty) returns(ManagedDevicesResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_managed_devices(self, **kwargs):
+        return self._grpc_helper(self.stub.GetManagedDevices, **kwargs)
+
+    # rpc SetLoggingEndpoint(SetLoggingEndpointRequest) returns(SetRemoteEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_logging_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetLoggingEndpoint, hw_management_service_pb2.SetLoggingEndpointRequest, param_dict, **kwargs)
+
+    # rpc GetLoggingEndpoint(Uuid) returns(GetLoggingEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_logging_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLoggingEndpoint, hw_pb2.Uuid, param_dict)
+
+    # rpc SetMsgBusEndpoint(SetMsgBusEndpointRequest) returns(SetRemoteEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_msg_bus_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetMsgBusEndpoint, hw_management_service_pb2.SetMsgBusEndpointRequest, param_dict, **kwargs)
+
+    # rpc GetMsgBusEndpoint(google.protobuf.Empty) returns(GetMsgBusEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_msg_bus_endpoint(self, **kwargs):
+        return self._grpc_helper(self.stub.GetMsgBusEndpoint, **kwargs)
+
+    # rpc GetLoggableEntities(GetLoggableEntitiesRequest) returns(GetLogLevelResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_loggable_entities(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLoggableEntities, hw_management_service_pb2.GetLoggableEntitiesRequest, param_dict, **kwargs)
+
+    # rpc SetLogLevel(SetLogLevelRequest) returns(SetLogLevelResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_log_level(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetLogLevel, hw_management_service_pb2.SetLogLevelRequest, param_dict, **kwargs)
+
+    # rpc GetLogLevel(GetLogLevelRequest) returns(GetLogLevelResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_log_level(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLogLevel, hw_management_service_pb2.GetLogLevelRequest, param_dict, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_0_9_3/__init__.py b/grpc_robot/services/dmi/dmi_0_9_3/__init__.py
new file mode 100644
index 0000000..c5af1c4
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_3/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_9_2 import *
diff --git a/grpc_robot/services/dmi/dmi_0_9_3/dmi.json b/grpc_robot/services/dmi/dmi_0_9_3/dmi.json
new file mode 100644
index 0000000..14850b9
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_3/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "Reason", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "WRONG_METRIC", "4": "WRONG_EVENT", "5": "LOGGING_ENDPOINT_ERROR", "6": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "7": "KAFKA_ENDPOINT_ERROR"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER", "15": "COMPONENT_TYPE_GPON_TRANSCEIVER", "16": "COMPONENT_TYPE_XGS_PON_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INTERMEDIATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "SensorValueType", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_TYPE_UNDEFINED", "1": "SENSOR_VALUE_TYPE_OTHER", "2": "SENSOR_VALUE_TYPE_UNKNOWN", "3": "SENSOR_VALUE_TYPE_VOLTS_AC", "4": "SENSOR_VALUE_TYPE_VOLTS_DC", "5": "SENSOR_VALUE_TYPE_AMPERES", "6": "SENSOR_VALUE_TYPE_WATTS", "7": "SENSOR_VALUE_TYPE_HERTZ", "8": "SENSOR_VALUE_TYPE_CELSIUS", "9": "SENSOR_VALUE_TYPE_PERCENT_RH", "10": "SENSOR_VALUE_TYPE_RPM", "11": "SENSOR_VALUE_TYPE_CMM", "12": "SENSOR_VALUE_TYPE_TRUTH_VALUE"}}, {"name": "SensorValueScale", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_SCALE_UNDEFINED", "1": "SENSOR_VALUE_SCALE_YOCTO", "2": "SENSOR_VALUE_SCALE_ZEPTO", "3": "SENSOR_VALUE_SCALE_ATTO", "4": "SENSOR_VALUE_SCALE_FEMTO", "5": "SENSOR_VALUE_SCALE_PICO", "6": "SENSOR_VALUE_SCALE_NANO", "7": "SENSOR_VALUE_SCALE_MICRO", "8": "SENSOR_VALUE_SCALE_MILLI", "9": "SENSOR_VALUE_SCALE_UNITS", "10": "SENSOR_VALUE_SCALE_KILO", "11": "SENSOR_VALUE_SCALE_MEGA", "12": "SENSOR_VALUE_SCALE_GIGA", "13": "SENSOR_VALUE_SCALE_TERA", "14": "SENSOR_VALUE_SCALE_PETA", "15": "SENSOR_VALUE_SCALE_EXA", "16": "SENSOR_VALUE_SCALE_ZETTA", "17": "SENSOR_VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "SensorValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "SensorValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "responses", "is_choice": false, "repeated": true, "type": "DeviceLogResponse", "lookup": true}]}, {"name": "DeviceLogResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "Uuid", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_9_4/__init__.py b/grpc_robot/services/dmi/dmi_0_9_4/__init__.py
new file mode 100644
index 0000000..789917d
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_4/__init__.py
@@ -0,0 +1,17 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_9_1.hw_events_mgmt_service import *
+from ..dmi_0_9_1.hw_metrics_mgmt_service import *
+from ..dmi_0_9_1.sw_management_service import *
+from .hw_management_service import *
diff --git a/grpc_robot/services/dmi/dmi_0_9_4/dmi.json b/grpc_robot/services/dmi/dmi_0_9_4/dmi.json
new file mode 100644
index 0000000..eee2af4
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_4/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "Reason", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "WRONG_METRIC", "4": "WRONG_EVENT", "5": "LOGGING_ENDPOINT_ERROR", "6": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "7": "KAFKA_ENDPOINT_ERROR", "8": "UNKNOWN_LOG_ENTITY"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER", "15": "COMPONENT_TYPE_GPON_TRANSCEIVER", "16": "COMPONENT_TYPE_XGS_PON_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INTERMEDIATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "SensorValueType", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_TYPE_UNDEFINED", "1": "SENSOR_VALUE_TYPE_OTHER", "2": "SENSOR_VALUE_TYPE_UNKNOWN", "3": "SENSOR_VALUE_TYPE_VOLTS_AC", "4": "SENSOR_VALUE_TYPE_VOLTS_DC", "5": "SENSOR_VALUE_TYPE_AMPERES", "6": "SENSOR_VALUE_TYPE_WATTS", "7": "SENSOR_VALUE_TYPE_HERTZ", "8": "SENSOR_VALUE_TYPE_CELSIUS", "9": "SENSOR_VALUE_TYPE_PERCENT_RH", "10": "SENSOR_VALUE_TYPE_RPM", "11": "SENSOR_VALUE_TYPE_CMM", "12": "SENSOR_VALUE_TYPE_TRUTH_VALUE"}}, {"name": "SensorValueScale", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_SCALE_UNDEFINED", "1": "SENSOR_VALUE_SCALE_YOCTO", "2": "SENSOR_VALUE_SCALE_ZEPTO", "3": "SENSOR_VALUE_SCALE_ATTO", "4": "SENSOR_VALUE_SCALE_FEMTO", "5": "SENSOR_VALUE_SCALE_PICO", "6": "SENSOR_VALUE_SCALE_NANO", "7": "SENSOR_VALUE_SCALE_MICRO", "8": "SENSOR_VALUE_SCALE_MILLI", "9": "SENSOR_VALUE_SCALE_UNITS", "10": "SENSOR_VALUE_SCALE_KILO", "11": "SENSOR_VALUE_SCALE_MEGA", "12": "SENSOR_VALUE_SCALE_GIGA", "13": "SENSOR_VALUE_SCALE_TERA", "14": "SENSOR_VALUE_SCALE_PETA", "15": "SENSOR_VALUE_SCALE_EXA", "16": "SENSOR_VALUE_SCALE_ZETTA", "17": "SENSOR_VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "SensorValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "SensorValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_9_4/hw_management_service.py b/grpc_robot/services/dmi/dmi_0_9_4/hw_management_service.py
new file mode 100644
index 0000000..5430d07
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_4/hw_management_service.py
@@ -0,0 +1,104 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from ...service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import hw_management_service_pb2_grpc, hw_management_service_pb2, hw_pb2
+
+
+class NativeHWManagementService(Service):
+
+    prefix = 'hw_management_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=hw_management_service_pb2_grpc.NativeHWManagementServiceStub)
+
+    # rpc StartManagingDevice(ModifiableComponent) returns(stream StartManagingDeviceResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_start_managing_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StartManagingDevice, hw_pb2.ModifiableComponent, param_dict, **kwargs)
+
+    # rpc StopManagingDevice(StopManagingDeviceRequest) returns(StopManagingDeviceResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_stop_managing_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StopManagingDevice, hw_management_service_pb2.StopManagingDeviceRequest, param_dict, **kwargs)
+
+    # rpc GetPhysicalInventory(PhysicalInventoryRequest) returns(stream PhysicalInventoryResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_physical_inventory(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetPhysicalInventory, hw_management_service_pb2.PhysicalInventoryRequest, param_dict, **kwargs)
+
+    # rpc GetHWComponentInfo(HWComponentInfoGetRequest) returns(stream HWComponentInfoGetResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_hw_component_info(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetHWComponentInfo, hw_management_service_pb2.HWComponentInfoGetRequest, param_dict, **kwargs)
+
+    # rpc SetHWComponentInfo(HWComponentInfoSetRequest) returns(HWComponentInfoSetResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_hw_component_info(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetHWComponentInfo, hw_management_service_pb2.HWComponentInfoSetRequest, param_dict, **kwargs)
+
+    # rpc GetManagedDevices(google.protobuf.Empty) returns(ManagedDevicesResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_managed_devices(self, **kwargs):
+        return self._grpc_helper(self.stub.GetManagedDevices, **kwargs)
+
+    # rpc SetLoggingEndpoint(SetLoggingEndpointRequest) returns(SetRemoteEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_logging_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetLoggingEndpoint, hw_management_service_pb2.SetLoggingEndpointRequest, param_dict, **kwargs)
+
+    # rpc GetLoggingEndpoint(HardwareID) returns(GetLoggingEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_logging_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLoggingEndpoint, hw_pb2.HardwareID, param_dict)
+
+    # rpc SetMsgBusEndpoint(SetMsgBusEndpointRequest) returns(SetRemoteEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_msg_bus_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetMsgBusEndpoint, hw_management_service_pb2.SetMsgBusEndpointRequest, param_dict, **kwargs)
+
+    # rpc GetMsgBusEndpoint(google.protobuf.Empty) returns(GetMsgBusEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_msg_bus_endpoint(self, **kwargs):
+        return self._grpc_helper(self.stub.GetMsgBusEndpoint, **kwargs)
+
+    # rpc GetLoggableEntities(GetLoggableEntitiesRequest) returns(GetLogLevelResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_loggable_entities(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLoggableEntities, hw_management_service_pb2.GetLoggableEntitiesRequest, param_dict, **kwargs)
+
+    # rpc SetLogLevel(SetLogLevelRequest) returns(SetLogLevelResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_log_level(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetLogLevel, hw_management_service_pb2.SetLogLevelRequest, param_dict, **kwargs)
+
+    # rpc GetLogLevel(GetLogLevelRequest) returns(GetLogLevelResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_log_level(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLogLevel, hw_management_service_pb2.GetLogLevelRequest, param_dict, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_0_9_5/__init__.py b/grpc_robot/services/dmi/dmi_0_9_5/__init__.py
new file mode 100644
index 0000000..6209d14
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_5/__init__.py
@@ -0,0 +1,17 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_9_1.hw_events_mgmt_service import *
+from ..dmi_0_9_4.hw_management_service import *
+from ..dmi_0_9_1.hw_metrics_mgmt_service import *
+from .sw_management_service import *
diff --git a/grpc_robot/services/dmi/dmi_0_9_5/dmi.json b/grpc_robot/services/dmi/dmi_0_9_5/dmi.json
new file mode 100644
index 0000000..adb08de
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_5/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "Reason", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "WRONG_METRIC", "4": "WRONG_EVENT", "5": "LOGGING_ENDPOINT_ERROR", "6": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "7": "KAFKA_ENDPOINT_ERROR", "8": "UNKNOWN_LOG_ENTITY", "9": "ERROR_FETCHING_CONFIG", "10": "INVALID_CONFIG"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER", "15": "COMPONENT_TYPE_GPON_TRANSCEIVER", "16": "COMPONENT_TYPE_XGS_PON_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INTERMEDIATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "SensorValueType", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_TYPE_UNDEFINED", "1": "SENSOR_VALUE_TYPE_OTHER", "2": "SENSOR_VALUE_TYPE_UNKNOWN", "3": "SENSOR_VALUE_TYPE_VOLTS_AC", "4": "SENSOR_VALUE_TYPE_VOLTS_DC", "5": "SENSOR_VALUE_TYPE_AMPERES", "6": "SENSOR_VALUE_TYPE_WATTS", "7": "SENSOR_VALUE_TYPE_HERTZ", "8": "SENSOR_VALUE_TYPE_CELSIUS", "9": "SENSOR_VALUE_TYPE_PERCENT_RH", "10": "SENSOR_VALUE_TYPE_RPM", "11": "SENSOR_VALUE_TYPE_CMM", "12": "SENSOR_VALUE_TYPE_TRUTH_VALUE"}}, {"name": "SensorValueScale", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_SCALE_UNDEFINED", "1": "SENSOR_VALUE_SCALE_YOCTO", "2": "SENSOR_VALUE_SCALE_ZEPTO", "3": "SENSOR_VALUE_SCALE_ATTO", "4": "SENSOR_VALUE_SCALE_FEMTO", "5": "SENSOR_VALUE_SCALE_PICO", "6": "SENSOR_VALUE_SCALE_NANO", "7": "SENSOR_VALUE_SCALE_MICRO", "8": "SENSOR_VALUE_SCALE_MILLI", "9": "SENSOR_VALUE_SCALE_UNITS", "10": "SENSOR_VALUE_SCALE_KILO", "11": "SENSOR_VALUE_SCALE_MEGA", "12": "SENSOR_VALUE_SCALE_GIGA", "13": "SENSOR_VALUE_SCALE_TERA", "14": "SENSOR_VALUE_SCALE_PETA", "15": "SENSOR_VALUE_SCALE_EXA", "16": "SENSOR_VALUE_SCALE_ZETTA", "17": "SENSOR_VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "SensorValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "SensorValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}, {"name": "ConfigRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ConfigResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "UpdateStartupConfiguration", "request": {"is_stream": false, "type": "ConfigRequest", "lookup": true}, "response": {"is_stream": true, "type": "ConfigResponse", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_9_5/sw_management_service.py b/grpc_robot/services/dmi/dmi_0_9_5/sw_management_service.py
new file mode 100644
index 0000000..d9db6d9
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_5/sw_management_service.py
@@ -0,0 +1,56 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import sw_management_service_pb2_grpc, sw_management_service_pb2, hw_pb2
+
+
+class NativeSoftwareManagementService(Service):
+
+    prefix = 'sw_management_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=sw_management_service_pb2_grpc.NativeSoftwareManagementServiceStub)
+
+    # rpc GetSoftwareVersion(HardwareID) returns(GetSoftwareVersionInformationResponse);
+    @keyword
+    @is_connected
+    def sw_management_service_get_software_version(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetSoftwareVersion, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc DownloadImage(DownloadImageRequest) returns(stream ImageStatus);
+    @keyword
+    @is_connected
+    def sw_management_service_download_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DownloadImage, sw_management_service_pb2.DownloadImageRequest, param_dict, **kwargs)
+
+    # rpc ActivateImage(HardwareID) returns(stream ImageStatus);
+    @keyword
+    @is_connected
+    def sw_management_service_activate_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ActivateImage, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc RevertToStandbyImage(HardwareID) returns(stream ImageStatus);
+    @keyword
+    @is_connected
+    def sw_management_service_revert_to_standby_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.RevertToStandbyImage, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc UpdateStartupConfiguration(ConfigRequest) returns(stream ConfigResponse);
+    @keyword
+    @is_connected
+    def sw_management_service_update_startup_configuration(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateStartupConfiguration, sw_management_service_pb2.ConfigRequest, param_dict, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_0_9_6/__init__.py b/grpc_robot/services/dmi/dmi_0_9_6/__init__.py
new file mode 100644
index 0000000..f700805
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_6/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_9_5 import *
diff --git a/grpc_robot/services/dmi/dmi_0_9_6/dmi.json b/grpc_robot/services/dmi/dmi_0_9_6/dmi.json
new file mode 100644
index 0000000..3205f2c
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_6/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "Reason", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "WRONG_METRIC", "4": "WRONG_EVENT", "5": "LOGGING_ENDPOINT_ERROR", "6": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "7": "KAFKA_ENDPOINT_ERROR", "8": "UNKNOWN_LOG_ENTITY", "9": "ERROR_FETCHING_CONFIG", "10": "INVALID_CONFIG"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER", "15": "COMPONENT_TYPE_GPON_TRANSCEIVER", "16": "COMPONENT_TYPE_XGS_PON_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INDETERMINATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "SensorValueType", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_TYPE_UNDEFINED", "1": "SENSOR_VALUE_TYPE_OTHER", "2": "SENSOR_VALUE_TYPE_UNKNOWN", "3": "SENSOR_VALUE_TYPE_VOLTS_AC", "4": "SENSOR_VALUE_TYPE_VOLTS_DC", "5": "SENSOR_VALUE_TYPE_AMPERES", "6": "SENSOR_VALUE_TYPE_WATTS", "7": "SENSOR_VALUE_TYPE_HERTZ", "8": "SENSOR_VALUE_TYPE_CELSIUS", "9": "SENSOR_VALUE_TYPE_PERCENT_RH", "10": "SENSOR_VALUE_TYPE_RPM", "11": "SENSOR_VALUE_TYPE_CMM", "12": "SENSOR_VALUE_TYPE_TRUTH_VALUE"}}, {"name": "SensorValueScale", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_SCALE_UNDEFINED", "1": "SENSOR_VALUE_SCALE_YOCTO", "2": "SENSOR_VALUE_SCALE_ZEPTO", "3": "SENSOR_VALUE_SCALE_ATTO", "4": "SENSOR_VALUE_SCALE_FEMTO", "5": "SENSOR_VALUE_SCALE_PICO", "6": "SENSOR_VALUE_SCALE_NANO", "7": "SENSOR_VALUE_SCALE_MICRO", "8": "SENSOR_VALUE_SCALE_MILLI", "9": "SENSOR_VALUE_SCALE_UNITS", "10": "SENSOR_VALUE_SCALE_KILO", "11": "SENSOR_VALUE_SCALE_MEGA", "12": "SENSOR_VALUE_SCALE_GIGA", "13": "SENSOR_VALUE_SCALE_TERA", "14": "SENSOR_VALUE_SCALE_PETA", "15": "SENSOR_VALUE_SCALE_EXA", "16": "SENSOR_VALUE_SCALE_ZETTA", "17": "SENSOR_VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "SensorValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "SensorValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}, {"name": "ConfigRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ConfigResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "UpdateStartupConfiguration", "request": {"is_stream": false, "type": "ConfigRequest", "lookup": true}, "response": {"is_stream": true, "type": "ConfigResponse", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_9_8/__init__.py b/grpc_robot/services/dmi/dmi_0_9_8/__init__.py
new file mode 100644
index 0000000..6209d14
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_8/__init__.py
@@ -0,0 +1,17 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_9_1.hw_events_mgmt_service import *
+from ..dmi_0_9_4.hw_management_service import *
+from ..dmi_0_9_1.hw_metrics_mgmt_service import *
+from .sw_management_service import *
diff --git a/grpc_robot/services/dmi/dmi_0_9_8/dmi.json b/grpc_robot/services/dmi/dmi_0_9_8/dmi.json
new file mode 100644
index 0000000..4959cf0
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_8/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER", "15": "COMPONENT_TYPE_GPON_TRANSCEIVER", "16": "COMPONENT_TYPE_XGS_PON_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INDETERMINATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "SensorValueType", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_TYPE_UNDEFINED", "1": "SENSOR_VALUE_TYPE_OTHER", "2": "SENSOR_VALUE_TYPE_UNKNOWN", "3": "SENSOR_VALUE_TYPE_VOLTS_AC", "4": "SENSOR_VALUE_TYPE_VOLTS_DC", "5": "SENSOR_VALUE_TYPE_AMPERES", "6": "SENSOR_VALUE_TYPE_WATTS", "7": "SENSOR_VALUE_TYPE_HERTZ", "8": "SENSOR_VALUE_TYPE_CELSIUS", "9": "SENSOR_VALUE_TYPE_PERCENT_RH", "10": "SENSOR_VALUE_TYPE_RPM", "11": "SENSOR_VALUE_TYPE_CMM", "12": "SENSOR_VALUE_TYPE_TRUTH_VALUE"}}, {"name": "SensorValueScale", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_SCALE_UNDEFINED", "1": "SENSOR_VALUE_SCALE_YOCTO", "2": "SENSOR_VALUE_SCALE_ZEPTO", "3": "SENSOR_VALUE_SCALE_ATTO", "4": "SENSOR_VALUE_SCALE_FEMTO", "5": "SENSOR_VALUE_SCALE_PICO", "6": "SENSOR_VALUE_SCALE_NANO", "7": "SENSOR_VALUE_SCALE_MICRO", "8": "SENSOR_VALUE_SCALE_MILLI", "9": "SENSOR_VALUE_SCALE_UNITS", "10": "SENSOR_VALUE_SCALE_KILO", "11": "SENSOR_VALUE_SCALE_MEGA", "12": "SENSOR_VALUE_SCALE_GIGA", "13": "SENSOR_VALUE_SCALE_TERA", "14": "SENSOR_VALUE_SCALE_PETA", "15": "SENSOR_VALUE_SCALE_EXA", "16": "SENSOR_VALUE_SCALE_ZETTA", "17": "SENSOR_VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "SensorValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "SensorValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "POLL_INTERVAL_UNSUPPORTED", "4": "INVALID_METRIC"}}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "INVALID_METRIC"}}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "INVALID_CONFIG"}}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM", "6": "OPERATION_ALREADY_IN_PROGRESS", "7": "UNKNOWN_DEVICE", "8": "DEVICE_NOT_REACHABLE"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR"}}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR"}}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "DEVICE_ALREADY_MANAGED", "2": "OPERATION_ALREADY_IN_PROGRESS", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR"}}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE"}}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "LOGGING_ENDPOINT_ERROR", "4": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "5": "MSGBUS_ENDPOINT_ERROR"}}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "INTERNAL_ERROR"}}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY"}}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY"}}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}, {"name": "ConfigRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "ERROR_FETCHING_CONFIG", "4": "INVALID_CONFIG", "5": "OPERATION_ALREADY_IN_PROGRESS"}}, {"name": "ConfigResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "StartupConfigInfoRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "StartupConfigInfoResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "UpdateStartupConfiguration", "request": {"is_stream": false, "type": "ConfigRequest", "lookup": true}, "response": {"is_stream": true, "type": "ConfigResponse", "lookup": true}}, {"name": "GetStartupConfigurationInfo", "request": {"is_stream": false, "type": "StartupConfigInfoRequest", "lookup": true}, "response": {"is_stream": false, "type": "StartupConfigInfoResponse", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_0_9_8/sw_management_service.py b/grpc_robot/services/dmi/dmi_0_9_8/sw_management_service.py
new file mode 100644
index 0000000..1807c0f
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_8/sw_management_service.py
@@ -0,0 +1,62 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import sw_management_service_pb2_grpc, sw_management_service_pb2, hw_pb2
+
+
+class NativeSoftwareManagementService(Service):
+
+    prefix = 'sw_management_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=sw_management_service_pb2_grpc.NativeSoftwareManagementServiceStub)
+
+    # rpc GetSoftwareVersion(HardwareID) returns(GetSoftwareVersionInformationResponse);
+    @keyword
+    @is_connected
+    def sw_management_service_get_software_version(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetSoftwareVersion, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc DownloadImage(DownloadImageRequest) returns(stream ImageStatus);
+    @keyword
+    @is_connected
+    def sw_management_service_download_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DownloadImage, sw_management_service_pb2.DownloadImageRequest, param_dict, **kwargs)
+
+    # rpc ActivateImage(HardwareID) returns(stream ImageStatus);
+    @keyword
+    @is_connected
+    def sw_management_service_activate_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ActivateImage, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc RevertToStandbyImage(HardwareID) returns(stream ImageStatus);
+    @keyword
+    @is_connected
+    def sw_management_service_revert_to_standby_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.RevertToStandbyImage, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc UpdateStartupConfiguration(ConfigRequest) returns(stream ConfigResponse);
+    @keyword
+    @is_connected
+    def sw_management_service_update_startup_configuration(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateStartupConfiguration, sw_management_service_pb2.ConfigRequest, param_dict, **kwargs)
+
+    # rpc GetStartupConfigurationInfo(StartupConfigInfoRequest) returns(StartupConfigInfoResponse);
+    @keyword
+    @is_connected
+    def sw_management_service_get_startup_configuration_info(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetStartupConfigurationInfo, sw_management_service_pb2.StartupConfigInfoRequest, param_dict, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_0_9_9/__init__.py b/grpc_robot/services/dmi/dmi_0_9_9/__init__.py
new file mode 100644
index 0000000..1c90929
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_9/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_9_8 import *
diff --git a/grpc_robot/services/dmi/dmi_0_9_9/dmi.json b/grpc_robot/services/dmi/dmi_0_9_9/dmi.json
new file mode 100644
index 0000000..4959cf0
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_0_9_9/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER", "15": "COMPONENT_TYPE_GPON_TRANSCEIVER", "16": "COMPONENT_TYPE_XGS_PON_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INDETERMINATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "SensorValueType", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_TYPE_UNDEFINED", "1": "SENSOR_VALUE_TYPE_OTHER", "2": "SENSOR_VALUE_TYPE_UNKNOWN", "3": "SENSOR_VALUE_TYPE_VOLTS_AC", "4": "SENSOR_VALUE_TYPE_VOLTS_DC", "5": "SENSOR_VALUE_TYPE_AMPERES", "6": "SENSOR_VALUE_TYPE_WATTS", "7": "SENSOR_VALUE_TYPE_HERTZ", "8": "SENSOR_VALUE_TYPE_CELSIUS", "9": "SENSOR_VALUE_TYPE_PERCENT_RH", "10": "SENSOR_VALUE_TYPE_RPM", "11": "SENSOR_VALUE_TYPE_CMM", "12": "SENSOR_VALUE_TYPE_TRUTH_VALUE"}}, {"name": "SensorValueScale", "type": "enum", "module": "hw", "values": {"0": "SENSOR_VALUE_SCALE_UNDEFINED", "1": "SENSOR_VALUE_SCALE_YOCTO", "2": "SENSOR_VALUE_SCALE_ZEPTO", "3": "SENSOR_VALUE_SCALE_ATTO", "4": "SENSOR_VALUE_SCALE_FEMTO", "5": "SENSOR_VALUE_SCALE_PICO", "6": "SENSOR_VALUE_SCALE_NANO", "7": "SENSOR_VALUE_SCALE_MICRO", "8": "SENSOR_VALUE_SCALE_MILLI", "9": "SENSOR_VALUE_SCALE_UNITS", "10": "SENSOR_VALUE_SCALE_KILO", "11": "SENSOR_VALUE_SCALE_MEGA", "12": "SENSOR_VALUE_SCALE_GIGA", "13": "SENSOR_VALUE_SCALE_TERA", "14": "SENSOR_VALUE_SCALE_PETA", "15": "SENSOR_VALUE_SCALE_EXA", "16": "SENSOR_VALUE_SCALE_ZETTA", "17": "SENSOR_VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "SensorValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "SensorValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "POLL_INTERVAL_UNSUPPORTED", "4": "INVALID_METRIC"}}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "INVALID_METRIC"}}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "INVALID_CONFIG"}}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM", "6": "OPERATION_ALREADY_IN_PROGRESS", "7": "UNKNOWN_DEVICE", "8": "DEVICE_NOT_REACHABLE"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR"}}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR"}}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "DEVICE_ALREADY_MANAGED", "2": "OPERATION_ALREADY_IN_PROGRESS", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR"}}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE"}}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "devices", "is_choice": false, "repeated": true, "type": "ModifiableComponent", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "LOGGING_ENDPOINT_ERROR", "4": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "5": "MSGBUS_ENDPOINT_ERROR"}}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "INTERNAL_ERROR"}}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY"}}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY"}}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}, {"name": "ConfigRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "ERROR_FETCHING_CONFIG", "4": "INVALID_CONFIG", "5": "OPERATION_ALREADY_IN_PROGRESS"}}, {"name": "ConfigResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}]}, {"name": "StartupConfigInfoRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR"}}, {"name": "StartupConfigInfoResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "UpdateStartupConfiguration", "request": {"is_stream": false, "type": "ConfigRequest", "lookup": true}, "response": {"is_stream": true, "type": "ConfigResponse", "lookup": true}}, {"name": "GetStartupConfigurationInfo", "request": {"is_stream": false, "type": "StartupConfigInfoRequest", "lookup": true}, "response": {"is_stream": false, "type": "StartupConfigInfoResponse", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_1_0_0/__init__.py b/grpc_robot/services/dmi/dmi_1_0_0/__init__.py
new file mode 100644
index 0000000..d03333b
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_1_0_0/__init__.py
@@ -0,0 +1,17 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..dmi_0_9_8.sw_management_service import *
+from .hw_events_mgmt_service import *
+from .hw_management_service import *
+from .hw_metrics_mgmt_service import *
diff --git a/grpc_robot/services/dmi/dmi_1_0_0/dmi.json b/grpc_robot/services/dmi/dmi_1_0_0/dmi.json
new file mode 100644
index 0000000..d4bbb96
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_1_0_0/dmi.json
@@ -0,0 +1 @@
+{"modules": [{"name": "commons", "imports": []}, {"name": "hw", "imports": ["timestamp"]}, {"name": "hw_metrics_mgmt_service", "imports": ["commons", "hw", "empty"]}, {"name": "hw_events_mgmt_service", "imports": ["commons", "hw", "timestamp", "empty"]}, {"name": "sw_image", "imports": ["commons"]}, {"name": "hw_management_service", "imports": ["commons", "hw", "empty"]}, {"name": "sw_management_service", "imports": ["commons", "hw", "sw_image"]}], "data_types": [{"name": "Status", "type": "enum", "module": "commons", "values": {"0": "UNDEFINED_STATUS", "1": "OK_STATUS", "2": "ERROR_STATUS"}}, {"name": "LogLevel", "type": "enum", "module": "commons", "values": {"0": "TRACE", "1": "DEBUG", "2": "INFO", "3": "WARN", "4": "ERROR"}}, {"name": "Uuid", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HardwareID", "type": "message", "module": "hw", "fields": [{"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Uri", "type": "message", "module": "hw", "fields": [{"name": "uri", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ComponentType", "type": "enum", "module": "hw", "values": {"0": "COMPONENT_TYPE_UNDEFINED", "1": "COMPONENT_TYPE_UNKNOWN", "2": "COMPONENT_TYPE_CHASSIS", "3": "COMPONENT_TYPE_BACKPLANE", "4": "COMPONENT_TYPE_CONTAINER", "5": "COMPONENT_TYPE_POWER_SUPPLY", "6": "COMPONENT_TYPE_FAN", "7": "COMPONENT_TYPE_SENSOR", "8": "COMPONENT_TYPE_MODULE", "9": "COMPONENT_TYPE_PORT", "10": "COMPONENT_TYPE_CPU", "11": "COMPONENT_TYPE_BATTERY", "12": "COMPONENT_TYPE_STORAGE", "13": "COMPONENT_TYPE_MEMORY", "14": "COMPONENT_TYPE_TRANSCEIVER"}}, {"name": "ComponentAdminState", "type": "enum", "module": "hw", "values": {"0": "COMP_ADMIN_STATE_UNDEFINED", "1": "COMP_ADMIN_STATE_UNKNOWN", "2": "COMP_ADMIN_STATE_LOCKED", "3": "COMP_ADMIN_STATE_SHUTTING_DOWN", "4": "COMP_ADMIN_STATE_UNLOCKED"}}, {"name": "ComponentOperState", "type": "enum", "module": "hw", "values": {"0": "COMP_OPER_STATE_UNDEFINED", "1": "COMP_OPER_STATE_UNKNOWN", "2": "COMP_OPER_STATE_DISABLED", "3": "COMP_OPER_STATE_ENABLED", "4": "COMP_OPER_STATE_TESTING"}}, {"name": "ComponentUsageState", "type": "enum", "module": "hw", "values": {"0": "COMP_USAGE_STATE_UNDEFINED", "1": "COMP_USAGE_STATE_UNKNOWN", "2": "COMP_USAGE_STATE_IDLE", "3": "COMP_USAGE_STATE_ACTIVE", "4": "COMP_USAGE_STATE_BUSY"}}, {"name": "ComponentAlarmState", "type": "enum", "module": "hw", "values": {"0": "COMP_ALARM_STATE_UNDEFINED", "1": "COMP_ALARM_STATE_UNKNOWN", "2": "COMP_ALARM_STATE_UNDER_REPAIR", "3": "COMP_ALARM_STATE_CRITICAL", "4": "COMP_ALARM_STATE_MAJOR", "5": "COMP_ALARM_STATE_MINOR", "6": "COMP_ALARM_STATE_WARNING", "7": "COMP_ALARM_STATE_INDETERMINATE"}}, {"name": "ComponentStandbyState", "type": "enum", "module": "hw", "values": {"0": "COMP_STANDBY_STATE_UNDEFINED", "1": "COMP_STANDBY_STATE_UNKNOWN", "2": "COMP_STANDBY_STATE_HOT", "3": "COMP_STANDBY_STATE_COLD", "4": "COMP_STANDBY_STATE_PROVIDING_SERVICE"}}, {"name": "ComponentState", "type": "message", "module": "hw", "fields": [{"name": "state_last_changed", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}, {"name": "oper_state", "is_choice": false, "repeated": false, "type": "ComponentOperState", "lookup": true}, {"name": "usage_state", "is_choice": false, "repeated": false, "type": "ComponentUsageState", "lookup": true}, {"name": "alarm_state", "is_choice": false, "repeated": false, "type": "ComponentAlarmState", "lookup": true}, {"name": "standby_state", "is_choice": false, "repeated": false, "type": "ComponentStandbyState", "lookup": true}]}, {"name": "DataValueType", "type": "enum", "module": "hw", "values": {"0": "VALUE_TYPE_UNDEFINED", "1": "VALUE_TYPE_OTHER", "2": "VALUE_TYPE_UNKNOWN", "3": "VALUE_TYPE_VOLTS_AC", "4": "VALUE_TYPE_VOLTS_DC", "5": "VALUE_TYPE_AMPERES", "6": "VALUE_TYPE_WATTS", "7": "VALUE_TYPE_HERTZ", "8": "VALUE_TYPE_CELSIUS", "9": "VALUE_TYPE_PERCENT_RH", "10": "VALUE_TYPE_RPM", "11": "VALUE_TYPE_CMM", "12": "VALUE_TYPE_TRUTH_VALUE", "13": "VALUE_TYPE_PERCENT", "14": "VALUE_TYPE_METERS", "15": "VALUE_TYPE_BYTES"}}, {"name": "ValueScale", "type": "enum", "module": "hw", "values": {"0": "VALUE_SCALE_UNDEFINED", "1": "VALUE_SCALE_YOCTO", "2": "VALUE_SCALE_ZEPTO", "3": "VALUE_SCALE_ATTO", "4": "VALUE_SCALE_FEMTO", "5": "VALUE_SCALE_PICO", "6": "VALUE_SCALE_NANO", "7": "VALUE_SCALE_MICRO", "8": "VALUE_SCALE_MILLI", "9": "VALUE_SCALE_UNITS", "10": "VALUE_SCALE_KILO", "11": "VALUE_SCALE_MEGA", "12": "VALUE_SCALE_GIGA", "13": "VALUE_SCALE_TERA", "14": "VALUE_SCALE_PETA", "15": "VALUE_SCALE_EXA", "16": "VALUE_SCALE_ZETTA", "17": "VALUE_SCALE_YOTTA"}}, {"name": "SensorStatus", "type": "enum", "module": "hw", "values": {"0": "SENSOR_STATUS_UNDEFINED", "1": "SENSOR_STATUS_OK", "2": "SENSOR_STATUS_UNAVAILABLE", "3": "SENSOR_STATUS_NONOPERATIONAL"}}, {"name": "ComponentSensorData", "type": "message", "module": "hw", "fields": [{"name": "value", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "type", "is_choice": false, "repeated": false, "type": "DataValueType", "lookup": true}, {"name": "scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}, {"name": "precision", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "status", "is_choice": false, "repeated": false, "type": "SensorStatus", "lookup": true}, {"name": "units_display", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "timestamp", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "value_update_rate", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "data_type", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ConnectorType", "type": "enum", "module": "hw", "values": {"0": "CONNECTOR_TYPE_UNDEFINED", "1": "RJ45", "2": "FIBER_LC", "3": "FIBER_SC_PC", "4": "FIBER_MPO", "5": "RS232"}}, {"name": "Speed", "type": "enum", "module": "hw", "values": {"0": "SPEED_UNDEFINED", "1": "DYNAMIC", "2": "GIGABIT_1", "3": "GIGABIT_10", "4": "GIGABIT_25", "5": "GIGABIT_40", "6": "GIGABIT_100", "7": "GIGABIT_400", "8": "MEGABIT_2500", "9": "MEGABIT_1250"}}, {"name": "Protocol", "type": "enum", "module": "hw", "values": {"0": "PROTOCOL_UNDEFINED", "1": "ETHERNET", "2": "GPON", "3": "XGPON", "4": "XGSPON", "5": "GFAST", "6": "SERIAL", "7": "EPON", "8": "BITS"}}, {"name": "PortComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "connector_type", "is_choice": false, "repeated": false, "type": "ConnectorType", "lookup": true}, {"name": "speed", "is_choice": false, "repeated": false, "type": "Speed", "lookup": true}, {"name": "protocol", "is_choice": false, "repeated": false, "type": "Protocol", "lookup": true}, {"name": "physical_label", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ContainerComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "physical_label", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SupportedVoltage", "type": "enum", "module": "hw", "values": {"0": "SUPPORTED_VOLTAGE_UNDEFINED", "1": "V48", "2": "V230", "3": "V115"}}, {"name": "PsuComponentAttributes", "type": "message", "module": "hw", "fields": [{"name": "supported_voltage", "is_choice": false, "repeated": false, "type": "SupportedVoltage", "lookup": true}]}, {"name": "FormFactor", "type": "enum", "module": "hw", "values": {"0": "FORM_FACTOR_UNKNOWN", "1": "QSFP", "2": "QSFP_PLUS", "3": "QSFP28", "4": "SFP", "5": "SFP_PLUS", "6": "XFP", "7": "CFP4", "8": "CFP2", "9": "CPAK", "10": "X2", "11": "OTHER", "12": "CFP", "13": "CFP2_ACO", "14": "CFP2_DCO"}}, {"name": "Type", "type": "enum", "module": "hw", "values": {"0": "TYPE_UNKNOWN", "1": "ETHERNET", "2": "GPON", "3": "XGPON", "4": "XGSPON", "5": "CPON", "6": "NG_PON2", "7": "EPON"}}, {"name": "TransceiverComponentsAttributes", "type": "message", "module": "hw", "fields": [{"name": "form_factor", "is_choice": false, "repeated": false, "type": "FormFactor", "lookup": true}, {"name": "trans_type", "is_choice": false, "repeated": false, "type": "Type", "lookup": true}, {"name": "max_distance", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}, {"name": "max_distance_scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}, {"name": "rx_wavelength", "is_choice": false, "repeated": true, "type": "uint32", "lookup": false}, {"name": "tx_wavelength", "is_choice": false, "repeated": true, "type": "uint32", "lookup": false}, {"name": "wavelength_scale", "is_choice": false, "repeated": false, "type": "ValueScale", "lookup": true}]}, {"name": "Component", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "children", "is_choice": false, "repeated": true, "type": "Component", "lookup": true}, {"name": "hardware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "firmware_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "software_rev", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "serial_num", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "mfg_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "model_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "is_fru", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "mfg_date", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ComponentState", "lookup": true}, {"name": "sensor_data", "is_choice": false, "repeated": true, "type": "ComponentSensorData", "lookup": true}, {"name": "specific", "is_choice": true, "cases": [{"name": "port_attr", "type": "PortComponentAttributes", "lookup": true}, {"name": "container_attr", "type": "ContainerComponentAttributes", "lookup": true}, {"name": "psu_attr", "type": "PsuComponentAttributes", "lookup": true}, {"name": "transceiver_attr", "type": "TransceiverComponentsAttributes", "lookup": true}]}]}, {"name": "Hardware", "type": "message", "module": "hw", "fields": [{"name": "last_change", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "root", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "last_booted", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}]}, {"name": "ModifiableComponent", "type": "message", "module": "hw", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "class", "is_choice": false, "repeated": false, "type": "ComponentType", "lookup": true}, {"name": "parent", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "parent_rel_pos", "is_choice": false, "repeated": false, "type": "int32", "lookup": false}, {"name": "alias", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "asset_id", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "uri", "is_choice": false, "repeated": false, "type": "Uri", "lookup": true}, {"name": "admin_state", "is_choice": false, "repeated": false, "type": "ComponentAdminState", "lookup": true}]}, {"name": "MetricNames", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "METRIC_NAME_UNDEFINED", "1": "METRIC_FAN_SPEED", "100": "METRIC_CPU_TEMP", "101": "METRIC_CPU_USAGE_PERCENTAGE", "200": "METRIC_TRANSCEIVER_TEMP", "201": "METRIC_TRANSCEIVER_VOLTAGE", "202": "METRIC_TRANSCEIVER_BIAS", "203": "METRIC_TRANSCEIVER_RX_POWER", "204": "METRIC_TRANSCEIVER_TX_POWER", "205": "METRIC_TRANSCEIVER_WAVELENGTH", "300": "METRIC_DISK_TEMP", "301": "METRIC_DISK_CAPACITY", "302": "METRIC_DISK_USAGE", "303": "METRIC_DISK_USAGE_PERCENTAGE", "304": "METRIC_DISK_READ_WRITE_PERCENTAGE", "305": "METRIC_DISK_FAULTY_CELLS_PERCENTAGE", "400": "METRIC_RAM_TEMP", "401": "METRIC_RAM_CAPACITY", "402": "METRIC_RAM_USAGE", "403": "METRIC_RAM_USAGE_PERCENTAGE", "500": "METRIC_POWER_MAX", "501": "METRIC_POWER_USAGE", "502": "METRIC_POWER_USAGE_PERCENTAGE", "600": "METRIC_INNER_SURROUNDING_TEMP"}}, {"name": "MetricConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "poll_interval", "is_choice": false, "repeated": false, "type": "uint32", "lookup": false}]}, {"name": "MetricsConfig", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metrics", "is_choice": false, "repeated": true, "type": "MetricConfig", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "ListMetricsResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metrics", "is_choice": false, "repeated": false, "type": "MetricsConfig", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "MetricsConfigurationRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "MetricsConfig", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "POLL_INTERVAL_UNSUPPORTED", "4": "INVALID_METRIC", "5": "DEVICE_UNREACHABLE"}}, {"name": "MetricsConfigurationResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "MetricMetaData", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Metric", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}, {"name": "metric_metadata", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "value", "is_choice": false, "repeated": false, "type": "ComponentSensorData", "lookup": true}]}, {"name": "GetMetricRequest", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "meta_data", "is_choice": false, "repeated": false, "type": "MetricMetaData", "lookup": true}, {"name": "metric_id", "is_choice": false, "repeated": false, "type": "MetricNames", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_metrics_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "INVALID_METRIC", "5": "DEVICE_UNREACHABLE"}}, {"name": "GetMetricResponse", "type": "message", "module": "hw_metrics_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "metric", "is_choice": false, "repeated": false, "type": "Metric", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventIds", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "EVENT_NAME_UNDEFINED", "100": "EVENT_TRANSCEIVER_PLUG_OUT", "101": "EVENT_TRANSCEIVER_PLUG_IN", "102": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD", "103": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD", "104": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD", "105": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD", "106": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD", "107": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD", "108": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD", "109": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD", "110": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD", "111": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD", "112": "EVENT_TRANSCEIVER_FAILURE", "113": "EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED", "114": "EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED", "115": "EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED", "116": "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED", "117": "EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED", "118": "EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED", "119": "EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED", "120": "EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED", "121": "EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED", "122": "EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED", "123": "EVENT_TRANSCEIVER_FAILURE_RECOVERED", "200": "EVENT_PSU_PLUG_OUT", "201": "EVENT_PSU_PLUG_IN", "202": "EVENT_PSU_FAILURE", "203": "EVENT_PSU_FAILURE_RECOVERED", "300": "EVENT_FAN_FAILURE", "301": "EVENT_FAN_PLUG_OUT", "302": "EVENT_FAN_PLUG_IN", "303": "EVENT_FAN_FAILURE_RECOVERED", "400": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL", "401": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL", "402": "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "403": "EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED", "500": "EVENT_HW_DEVICE_RESET", "501": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL", "502": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL", "503": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED", "504": "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED", "505": "EVENT_HW_DEVICE_REBOOT"}}, {"name": "ValueType", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "val", "is_choice": true, "cases": [{"name": "int_val", "type": "int64", "lookup": false}, {"name": "uint_val", "type": "uint64", "lookup": false}, {"name": "float_val", "type": "float", "lookup": false}]}]}, {"name": "WaterMarks", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "high", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "low", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}]}, {"name": "Thresholds", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "threshold", "is_choice": true, "cases": [{"name": "upper", "type": "WaterMarks", "lookup": true}, {"name": "lower", "type": "WaterMarks", "lookup": true}]}]}, {"name": "ThresholdInformation", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "observed_value", "is_choice": false, "repeated": false, "type": "ValueType", "lookup": true}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "is_configured", "is_choice": false, "repeated": false, "type": "bool", "lookup": false}, {"name": "thresholds", "is_choice": false, "repeated": false, "type": "Thresholds", "lookup": true}]}, {"name": "EventsCfg", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "items", "is_choice": false, "repeated": true, "type": "EventCfg", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "ListEventsResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "events", "is_choice": false, "repeated": false, "type": "EventsCfg", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventsConfigurationRequest", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "operation", "is_choice": true, "cases": [{"name": "changes", "type": "EventsCfg", "lookup": true}, {"name": "reset_to_default", "type": "bool", "lookup": false}]}]}, {"name": "Reason", "type": "enum", "module": "hw_events_mgmt_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "INVALID_CONFIG", "4": "DEVICE_UNREACHABLE"}}, {"name": "EventsConfigurationResponse", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EventMetaData", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Event", "type": "message", "module": "hw_events_mgmt_service", "fields": [{"name": "event_metadata", "is_choice": false, "repeated": false, "type": "EventMetaData", "lookup": true}, {"name": "event_id", "is_choice": false, "repeated": false, "type": "EventIds", "lookup": true}, {"name": "raised_ts", "is_choice": false, "repeated": false, "type": "google.protobuf.Timestamp", "lookup": true}, {"name": "threshold_info", "is_choice": false, "repeated": false, "type": "ThresholdInformation", "lookup": true}, {"name": "add_info", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageVersion", "type": "message", "module": "sw_image", "fields": [{"name": "image_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageInformation", "type": "message", "module": "sw_image", "fields": [{"name": "image", "is_choice": false, "repeated": false, "type": "ImageVersion", "lookup": true}, {"name": "image_install_script", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "image_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "sha256sum", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ImageState", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_STATE", "1": "COPYING_IMAGE", "2": "INSTALLING_IMAGE", "3": "COMMITTING_IMAGE", "4": "REBOOTING_DEVICE", "5": "UPGRADE_COMPLETE", "6": "UPGRADE_FAILED", "7": "ACTIVATION_COMPLETE", "8": "ACTIVATION_FAILED"}}, {"name": "Reason", "type": "enum", "module": "sw_image", "values": {"0": "UNDEFINED_REASON", "1": "ERROR_IN_REQUEST", "2": "INTERNAL_ERROR", "3": "DEVICE_IN_WRONG_STATE", "4": "INVALID_IMAGE", "5": "WRONG_IMAGE_CHECKSUM", "6": "OPERATION_ALREADY_IN_PROGRESS", "7": "UNKNOWN_DEVICE", "8": "DEVICE_NOT_REACHABLE"}}, {"name": "ImageStatus", "type": "message", "module": "sw_image", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "state", "is_choice": false, "repeated": false, "type": "ImageState", "lookup": true}, {"name": "description", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "PhysicalInventoryRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "PhysicalInventoryResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "inventory", "is_choice": false, "repeated": false, "type": "Hardware", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoGetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INTERNAL_ERROR", "4": "DEVICE_UNREACHABLE"}}, {"name": "HWComponentInfoGetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "component", "is_choice": false, "repeated": false, "type": "Component", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "HWComponentInfoSetRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "component_name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "changes", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "UNKNOWN_COMPONENT", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR", "5": "DEVICE_UNREACHABLE"}}, {"name": "HWComponentInfoSetResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "DEVICE_ALREADY_MANAGED", "2": "OPERATION_ALREADY_IN_PROGRESS", "3": "INVALID_PARAMS", "4": "INTERNAL_ERROR", "5": "AUTHENTICATION_FAILURE", "6": "INCOMPATIBLE_DEVICE"}}, {"name": "StartManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StopManagingDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "name", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE"}}, {"name": "StopManagingDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "ManagedDeviceInfo", "type": "message", "module": "hw_management_service", "fields": [{"name": "info", "is_choice": false, "repeated": false, "type": "ModifiableComponent", "lookup": true}, {"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "INTERNAL_ERROR"}}, {"name": "ManagedDevicesResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "devices", "is_choice": false, "repeated": true, "type": "ManagedDeviceInfo", "lookup": true}]}, {"name": "SetLoggingEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "LOGGING_ENDPOINT_ERROR", "4": "LOGGING_ENDPOINT_PROTOCOL_ERROR", "5": "MSGBUS_ENDPOINT_ERROR", "6": "DEVICE_UNREACHABLE"}}, {"name": "SetRemoteEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "GetLoggingEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "logging_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "logging_protocol", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SetMsgBusEndpointRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "INTERNAL_ERROR", "2": "DEVICE_UNREACHABLE"}}, {"name": "GetMsgBusEndpointResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "msgbus_endpoint", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "EntitiesLogLevel", "type": "message", "module": "hw_management_service", "fields": [{"name": "logLevel", "is_choice": false, "repeated": false, "type": "LogLevel", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "SetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "loglevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY", "4": "DEVICE_UNREACHABLE"}}, {"name": "SetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetLogLevelRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "entities", "is_choice": false, "repeated": true, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "UNKNOWN_LOG_ENTITY", "4": "DEVICE_UNREACHABLE"}}, {"name": "GetLogLevelResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "logLevels", "is_choice": false, "repeated": true, "type": "EntitiesLogLevel", "lookup": true}, {"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "GetLoggableEntitiesRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Heartbeat", "type": "message", "module": "hw_management_service", "fields": [{"name": "heartbeat_signature", "is_choice": false, "repeated": false, "type": "fixed32", "lookup": false}]}, {"name": "RebootDeviceRequest", "type": "message", "module": "hw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "hw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "RebootDeviceResponse", "type": "message", "module": "hw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "SoftwareVersionInformation", "type": "message", "module": "sw_management_service", "fields": [{"name": "active_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}, {"name": "standby_versions", "is_choice": false, "repeated": true, "type": "ImageVersion", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "GetSoftwareVersionInformationResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "info", "is_choice": false, "repeated": false, "type": "SoftwareVersionInformation", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "DownloadImageRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "image_info", "is_choice": false, "repeated": false, "type": "ImageInformation", "lookup": true}]}, {"name": "ConfigRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "ERROR_FETCHING_CONFIG", "4": "INVALID_CONFIG", "5": "OPERATION_ALREADY_IN_PROGRESS", "6": "DEVICE_UNREACHABLE"}}, {"name": "ConfigResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}, {"name": "StartupConfigInfoRequest", "type": "message", "module": "sw_management_service", "fields": [{"name": "device_uuid", "is_choice": false, "repeated": false, "type": "Uuid", "lookup": true}]}, {"name": "Reason", "type": "enum", "module": "sw_management_service", "values": {"0": "UNDEFINED_REASON", "1": "UNKNOWN_DEVICE", "2": "INTERNAL_ERROR", "3": "DEVICE_UNREACHABLE"}}, {"name": "StartupConfigInfoResponse", "type": "message", "module": "sw_management_service", "fields": [{"name": "status", "is_choice": false, "repeated": false, "type": "Status", "lookup": true}, {"name": "reason", "is_choice": false, "repeated": false, "type": "Reason", "lookup": true}, {"name": "config_url", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "version", "is_choice": false, "repeated": false, "type": "string", "lookup": false}, {"name": "reason_detail", "is_choice": false, "repeated": false, "type": "string", "lookup": false}]}], "services": [{"name": "NativeMetricsManagementService", "module": "hw_metrics_mgmt_service", "rpcs": [{"name": "ListMetrics", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListMetricsResponse", "lookup": true}}, {"name": "UpdateMetricsConfiguration", "request": {"is_stream": false, "type": "MetricsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "MetricsConfigurationResponse", "lookup": true}}, {"name": "GetMetric", "request": {"is_stream": false, "type": "GetMetricRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetMetricResponse", "lookup": true}}, {"name": "StreamMetrics", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": true, "type": "Metric", "lookup": true}}]}, {"name": "NativeEventsManagementService", "module": "hw_events_mgmt_service", "rpcs": [{"name": "ListEvents", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "ListEventsResponse", "lookup": true}}, {"name": "UpdateEventsConfiguration", "request": {"is_stream": false, "type": "EventsConfigurationRequest", "lookup": true}, "response": {"is_stream": false, "type": "EventsConfigurationResponse", "lookup": true}}, {"name": "StreamEvents", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": true, "type": "Event", "lookup": true}}]}, {"name": "NativeHWManagementService", "module": "hw_management_service", "rpcs": [{"name": "StartManagingDevice", "request": {"is_stream": false, "type": "ModifiableComponent", "lookup": true}, "response": {"is_stream": true, "type": "StartManagingDeviceResponse", "lookup": true}}, {"name": "StopManagingDevice", "request": {"is_stream": false, "type": "StopManagingDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "StopManagingDeviceResponse", "lookup": true}}, {"name": "GetManagedDevices", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "ManagedDevicesResponse", "lookup": true}}, {"name": "GetPhysicalInventory", "request": {"is_stream": false, "type": "PhysicalInventoryRequest", "lookup": true}, "response": {"is_stream": true, "type": "PhysicalInventoryResponse", "lookup": true}}, {"name": "GetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoGetRequest", "lookup": true}, "response": {"is_stream": true, "type": "HWComponentInfoGetResponse", "lookup": true}}, {"name": "SetHWComponentInfo", "request": {"is_stream": false, "type": "HWComponentInfoSetRequest", "lookup": true}, "response": {"is_stream": false, "type": "HWComponentInfoSetResponse", "lookup": true}}, {"name": "SetLoggingEndpoint", "request": {"is_stream": false, "type": "SetLoggingEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetLoggingEndpoint", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetLoggingEndpointResponse", "lookup": true}}, {"name": "SetMsgBusEndpoint", "request": {"is_stream": false, "type": "SetMsgBusEndpointRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetRemoteEndpointResponse", "lookup": true}}, {"name": "GetMsgBusEndpoint", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "GetMsgBusEndpointResponse", "lookup": true}}, {"name": "GetLoggableEntities", "request": {"is_stream": false, "type": "GetLoggableEntitiesRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "SetLogLevel", "request": {"is_stream": false, "type": "SetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "SetLogLevelResponse", "lookup": true}}, {"name": "GetLogLevel", "request": {"is_stream": false, "type": "GetLogLevelRequest", "lookup": true}, "response": {"is_stream": false, "type": "GetLogLevelResponse", "lookup": true}}, {"name": "HeartbeatCheck", "request": {"is_stream": false, "type": "google.protobuf.Empty", "lookup": false}, "response": {"is_stream": false, "type": "Heartbeat", "lookup": true}}, {"name": "RebootDevice", "request": {"is_stream": false, "type": "RebootDeviceRequest", "lookup": true}, "response": {"is_stream": false, "type": "RebootDeviceResponse", "lookup": true}}]}, {"name": "NativeSoftwareManagementService", "module": "sw_management_service", "rpcs": [{"name": "GetSoftwareVersion", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": false, "type": "GetSoftwareVersionInformationResponse", "lookup": true}}, {"name": "DownloadImage", "request": {"is_stream": false, "type": "DownloadImageRequest", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "ActivateImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "RevertToStandbyImage", "request": {"is_stream": false, "type": "HardwareID", "lookup": true}, "response": {"is_stream": true, "type": "ImageStatus", "lookup": true}}, {"name": "UpdateStartupConfiguration", "request": {"is_stream": false, "type": "ConfigRequest", "lookup": true}, "response": {"is_stream": true, "type": "ConfigResponse", "lookup": true}}, {"name": "GetStartupConfigurationInfo", "request": {"is_stream": false, "type": "StartupConfigInfoRequest", "lookup": true}, "response": {"is_stream": false, "type": "StartupConfigInfoResponse", "lookup": true}}]}]}
\ No newline at end of file
diff --git a/grpc_robot/services/dmi/dmi_1_0_0/hw_events_mgmt_service.py b/grpc_robot/services/dmi/dmi_1_0_0/hw_events_mgmt_service.py
new file mode 100644
index 0000000..ff4f093
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_1_0_0/hw_events_mgmt_service.py
@@ -0,0 +1,44 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import hw_events_mgmt_service_pb2_grpc, hw_events_mgmt_service_pb2, hw_pb2
+
+
+class NativeEventsManagementService(Service):
+
+    prefix = 'hw_event_mgmt_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=hw_events_mgmt_service_pb2_grpc.NativeEventsManagementServiceStub)
+
+    # rpc ListEvents(HardwareID) returns(ListEventsResponse);
+    @keyword
+    @is_connected
+    def hw_event_mgmt_service_list_events(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListEvents, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc UpdateEventsConfiguration(EventsConfigurationRequest) returns(EventsConfigurationResponse);
+    @keyword
+    @is_connected
+    def hw_event_mgmt_service_update_events_configuration(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateEventsConfiguration, hw_events_mgmt_service_pb2.EventsConfigurationRequest, param_dict, **kwargs)
+
+    # rpc StreamEvents(google.protobuf.Empty) returns(stream Event);
+    @keyword
+    @is_connected
+    def hw_event_mgmt_service_stream_events(self, **kwargs):
+        return self._grpc_helper(self.stub.StreamEvents, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_1_0_0/hw_management_service.py b/grpc_robot/services/dmi/dmi_1_0_0/hw_management_service.py
new file mode 100644
index 0000000..9d1a2dd
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_1_0_0/hw_management_service.py
@@ -0,0 +1,116 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from ...service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import hw_management_service_pb2_grpc, hw_management_service_pb2, hw_pb2
+
+
+class NativeHWManagementService(Service):
+
+    prefix = 'hw_management_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=hw_management_service_pb2_grpc.NativeHWManagementServiceStub)
+
+    # rpc StartManagingDevice(ModifiableComponent) returns(stream StartManagingDeviceResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_start_managing_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StartManagingDevice, hw_pb2.ModifiableComponent, param_dict, **kwargs)
+
+    # rpc StopManagingDevice(StopManagingDeviceRequest) returns(StopManagingDeviceResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_stop_managing_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StopManagingDevice, hw_management_service_pb2.StopManagingDeviceRequest, param_dict, **kwargs)
+
+    # rpc GetPhysicalInventory(PhysicalInventoryRequest) returns(stream PhysicalInventoryResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_physical_inventory(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetPhysicalInventory, hw_management_service_pb2.PhysicalInventoryRequest, param_dict, **kwargs)
+
+    # rpc GetHWComponentInfo(HWComponentInfoGetRequest) returns(stream HWComponentInfoGetResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_hw_component_info(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetHWComponentInfo, hw_management_service_pb2.HWComponentInfoGetRequest, param_dict, **kwargs)
+
+    # rpc SetHWComponentInfo(HWComponentInfoSetRequest) returns(HWComponentInfoSetResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_hw_component_info(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetHWComponentInfo, hw_management_service_pb2.HWComponentInfoSetRequest, param_dict, **kwargs)
+
+    # rpc GetManagedDevices(google.protobuf.Empty) returns(ManagedDevicesResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_managed_devices(self, **kwargs):
+        return self._grpc_helper(self.stub.GetManagedDevices, **kwargs)
+
+    # rpc SetLoggingEndpoint(SetLoggingEndpointRequest) returns(SetRemoteEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_logging_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetLoggingEndpoint, hw_management_service_pb2.SetLoggingEndpointRequest, param_dict, **kwargs)
+
+    # rpc GetLoggingEndpoint(HardwareID) returns(GetLoggingEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_logging_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLoggingEndpoint, hw_pb2.HardwareID, param_dict)
+
+    # rpc SetMsgBusEndpoint(SetMsgBusEndpointRequest) returns(SetRemoteEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_msg_bus_endpoint(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetMsgBusEndpoint, hw_management_service_pb2.SetMsgBusEndpointRequest, param_dict, **kwargs)
+
+    # rpc GetMsgBusEndpoint(google.protobuf.Empty) returns(GetMsgBusEndpointResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_msg_bus_endpoint(self, **kwargs):
+        return self._grpc_helper(self.stub.GetMsgBusEndpoint, **kwargs)
+
+    # rpc GetLoggableEntities(GetLoggableEntitiesRequest) returns(GetLogLevelResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_loggable_entities(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLoggableEntities, hw_management_service_pb2.GetLoggableEntitiesRequest, param_dict, **kwargs)
+
+    # rpc SetLogLevel(SetLogLevelRequest) returns(SetLogLevelResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_set_log_level(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetLogLevel, hw_management_service_pb2.SetLogLevelRequest, param_dict, **kwargs)
+
+    # rpc GetLogLevel(GetLogLevelRequest) returns(GetLogLevelResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_get_log_level(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLogLevel, hw_management_service_pb2.GetLogLevelRequest, param_dict, **kwargs)
+
+    # rpc HeartbeatCheck(google.protobuf.Empty) returns (Heartbeat);
+    @keyword
+    @is_connected
+    def hw_management_service_heartbeat_check(self, **kwargs):
+        return self._grpc_helper(self.stub.HeartbeatCheck, **kwargs)
+
+    # rpc RebootDevice(RebootDeviceRequest) returns(RebootDeviceResponse);
+    @keyword
+    @is_connected
+    def hw_management_service_reboot_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.RebootDevice, hw_management_service_pb2.RebootDeviceRequest, param_dict, **kwargs)
diff --git a/grpc_robot/services/dmi/dmi_1_0_0/hw_metrics_mgmt_service.py b/grpc_robot/services/dmi/dmi_1_0_0/hw_metrics_mgmt_service.py
new file mode 100644
index 0000000..bc983ec
--- /dev/null
+++ b/grpc_robot/services/dmi/dmi_1_0_0/hw_metrics_mgmt_service.py
@@ -0,0 +1,50 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from dmi import hw_metrics_mgmt_service_pb2_grpc, hw_metrics_mgmt_service_pb2, hw_pb2
+
+
+class NativeMetricsManagementService(Service):
+
+    prefix = 'hw_metrics_mgmt_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=hw_metrics_mgmt_service_pb2_grpc.NativeMetricsManagementServiceStub)
+
+    # rpc ListMetrics(HardwareID) returns(ListMetricsResponse);
+    @keyword
+    @is_connected
+    def hw_metrics_mgmt_service_list_metrics(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListMetrics, hw_pb2.HardwareID, param_dict, **kwargs)
+
+    # rpc UpdateMetricsConfiguration(MetricsConfigurationRequest) returns(MetricsConfigurationResponse);
+    @keyword
+    @is_connected
+    def hw_metrics_mgmt_service_update_metrics_configuration(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateMetricsConfiguration, hw_metrics_mgmt_service_pb2.MetricsConfigurationRequest, param_dict, **kwargs)
+
+    # rpc GetMetric(GetMetricRequest) returns(GetMetricResponse);
+    @keyword
+    @is_connected
+    def hw_metrics_mgmt_service_get_metric(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetMetric, hw_metrics_mgmt_service_pb2.GetMetricRequest, param_dict, **kwargs)
+
+    # rpc StreamMetrics(google.protobuf.Empty) returns(stream Metric);
+    @keyword
+    @is_connected
+    def hw_metrics_mgmt_service_stream_metrics(self, **kwargs):
+        return self._grpc_helper(self.stub.StreamMetrics, **kwargs)
diff --git a/grpc_robot/services/service.py b/grpc_robot/services/service.py
new file mode 100644
index 0000000..da799c0
--- /dev/null
+++ b/grpc_robot/services/service.py
@@ -0,0 +1,254 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+import grpc
+from grpc import _channel, ChannelConnectivity
+from decorator import decorator
+
+from ..tools.protobuf_to_dict import protobuf_to_dict, dict_to_protobuf
+from ..tools.robot_tools import Collections
+from google.protobuf import empty_pb2
+
+
+# decorator to check if connection is open
+@decorator
+def is_connected(library_function, *args, **kwargs):
+    try:
+        assert args[0].ctx.grpc_channel is not None
+        grpc.channel_ready_future(args[0].ctx.grpc_channel).result(timeout=10)
+    except (AssertionError, grpc.FutureTimeoutError):
+        raise ConnectionError('not connected to a gRPC channel')
+
+    return library_function(*args, **kwargs)
+
+
+# unfortunately conversation from snake-case to camel-case does not work for all keyword names, so we define a mapping dict
+kw_name_mapping = {
+    'GetHwComponentInfo': 'GetHWComponentInfo',
+    'SetHwComponentInfo': 'SetHWComponentInfo'
+}
+
+one_of_note = """*Note*: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\n"""
+named_parameters_note = """*Named parameters*:\n
+- return_enum_integer: <bool> or <string>; Whether or not to return the enum values as integer values rather than their labels. Default: _${FALSE}_ or _false_.\n
+- return_defaults: <bool> or <string>; Whether or not to return the default values. Default: _${FALSE}_ or _false_.\n
+- timeout: <int> or <string>; Number of seconds to wait for the response. Default: The timeout value set by keywords _Connection Open_ and _Connection Parameters Set_."""
+
+
+class Service(object):
+
+    prefix = ''
+
+    def __init__(self, ctx, stub=None):
+        super().__init__()
+        self.ctx = ctx
+
+        try:
+            self.stub = stub(channel=ctx.grpc_channel)
+        except AttributeError:
+            self.stub = None
+
+    def get_next_type_def(self, type_name, module):
+
+        next_type_defs = [d for d in self.ctx.protobuf['data_types'] if d['name'] == type_name]
+
+        if not next_type_defs:
+            return None
+
+        if len(next_type_defs) > 1:
+            next_type_def = [d for d in next_type_defs if d['module'] == module]
+
+            if next_type_def:
+                return next_type_def[0]
+
+            else:
+                return next_type_defs[0]
+
+        else:
+            return next_type_defs[0]
+
+    def lookup_type_def(self, _type_def, _indent='', _lookup_table=None, enum_indent=''):
+
+        _lookup_table = _lookup_table or []
+
+        if _type_def['name'] in _lookup_table:
+            return '< recursive type: ' + _type_def['name'] + ' >'
+        else:
+            _lookup_table.append(_type_def['name'])
+
+        if _type_def['type'] == 'message':
+
+            doc_string = '{    # type: %s\n' % _type_def['name']
+            _indent += '  '
+
+            for field in _type_def['fields']:
+                if field.get('is_choice', False):
+                    doc_string += self.get_field_doc(field, _indent, _lookup_table[:], _type_def['module'], field['name'])
+                else:
+                    doc_string += "%s'%s': %s\n" % (_indent, field['name'], self.get_field_doc(field, _indent, _lookup_table[:], _type_def['module']))
+
+            return doc_string + _indent[:-2] + '}'
+
+        if _type_def['type'] == 'enum':
+
+            try:
+                k_len = 0
+                for k, v in _type_def['values'].items():
+                    k_len = max(len(k), k_len)
+                enum = (' |\n %s%s' % (_indent, enum_indent)).join(['%s%s - %s' % ((k_len - len(k)) * ' ', k, v) for k, v in _type_def['values'].items()])
+
+            except AttributeError:
+                enum = ' | '.join(_type_def['values'])
+
+            return '< %s >' % enum
+
+        return ''
+
+    def get_field_doc(self, _type_def, _indent, _lookup_table, module, choice_name=''):
+
+        doc_string = ''
+
+        _indent = (_indent + '  ') if _type_def.get('repeated', False) else _indent
+
+        if _type_def.get('is_choice', False):
+            for case in _type_def['cases']:
+                # doc_string += "%s'*%s*' (ONEOF _%s_): %s\n" % (_indent, case['name'], choice_name, self.get_field_doc(case, _indent, _lookup_table[:], module))
+                doc_string += "%s'_ONEOF %s_: *%s*': %s\n" % (_indent, choice_name, case['name'], self.get_field_doc(case, _indent, _lookup_table[:], module))
+
+        elif _type_def.get('lookup', False):
+            try:
+                next_type_def = self.get_next_type_def(_type_def['type'], module=module)
+                if next_type_def is not None:
+                    doc_string += self.lookup_type_def(next_type_def, _indent, _lookup_table, (len(_type_def['name']) + 5) * ' ')
+                else:
+                    doc_string += "<%s>," % _type_def['type']
+
+            except KeyError:
+                doc_string += _type_def['type']
+        else:
+            doc_string += "<%s>," % _type_def['type']
+
+        if _type_def.get('repeated', False):
+            doc_string = '[    # list of:\n' + _indent + doc_string + '\n' + _indent[:-2] + ']'
+
+        return doc_string
+
+    def get_rpc_documentation(self, type_def, module):
+
+        indent = '  ' if type_def['is_stream'] else ''
+
+        if type_def['lookup']:
+            next_type_def = self.get_next_type_def(type_def['type'], module)
+            if next_type_def is not None:
+                doc_string = self.lookup_type_def(next_type_def, indent)
+            else:
+                doc_string = type_def['type'] + '\n'
+        else:
+            doc_string = type_def['type'] + '\n'
+
+        if type_def['is_stream']:
+            return '[    # list of:\n' + indent + doc_string + '\n]'
+        else:
+            return doc_string
+
+    def get_documentation(self, keyword_name):
+
+        keyword_name = Collections.to_camel_case(keyword_name.replace(self.prefix, ''), True)
+        keyword_name = kw_name_mapping.get(keyword_name, keyword_name)
+
+        try:
+            service = Collections.list_get_dict_by_value(self.ctx.protobuf.get('services', []), 'name', self.__class__.__name__)
+        except KeyError:
+            return 'no documentation available'
+
+        rpc = Collections.list_get_dict_by_value(service.get('rpcs', []), 'name', keyword_name)
+
+        doc_string = 'RPC _%s_ from _%s_.\n' % (rpc['name'], service['name'])
+        doc_string += '\n\n*Parameters*:\n'
+
+        for attr, attr_str in [('request', '- param_dict'), ('named_params', None), ('response', '*Return*')]:
+
+            if rpc.get(attr) is not None:
+                rpc_doc = '\n'.join(['| %s' % line for line in self.get_rpc_documentation(rpc.get(attr), service['module']).splitlines()])
+
+                if rpc_doc == '| google.protobuf.Empty':
+                    doc_string += '_none_\n\n'
+                    continue
+
+                doc_string += '\n%s:\n' % attr_str if '_ONEOF' not in rpc_doc else '\n%s: %s\n' % (attr_str, one_of_note)
+                doc_string += rpc_doc + '\n'
+
+            elif attr == 'named_params':
+                doc_string += named_parameters_note
+
+        return doc_string
+
+    @staticmethod
+    def to_protobuf(type_def, param_dict):
+        try:
+            return dict_to_protobuf(type_def or empty_pb2.Empty, param_dict or {})
+        except Exception as e:
+            raise ValueError('parameter dictionary does not match the ProtoBuf type definition: %s' % e)
+
+    def _process_response(self, response, index=None, **kwargs):
+
+        debug_text = 'RESPONSE' if index is None else 'RESPONSE-NEXT  ' if index else 'RESPONSE-STREAM'
+
+        return_enum_integer = bool(str(kwargs.get('return_enum_integer', False)).lower() == 'true')
+        return_defaults = bool(str(kwargs.get('return_defaults', False)).lower() == 'true')
+
+        self.ctx.logger.debug('%s : data=%s' % (debug_text, response))
+        _response = protobuf_to_dict(response, use_enum_labels=not return_enum_integer, including_default_value_fields=return_defaults)
+
+        return _response
+
+    def _grpc_helper(self, func, arg_type=None, param_dict=None, **kwargs):
+
+        def generate_stream(arg, data_list):
+
+            for idx, data in enumerate(data_list):
+                _protobuf = self.to_protobuf(arg, data)
+                debug_text = 'REQUEST-NEXT  :' if idx else 'REQUEST-STREAM : method=%s;' % func._method.decode()
+                self.ctx.logger.debug('%s data=%s' % (debug_text, _protobuf))
+                yield _protobuf
+
+        if isinstance(param_dict, list):
+            response = func(generate_stream(arg_type, param_dict), timeout=int(kwargs.get('timeout') or self.ctx.timeout))
+        else:
+            protobuf = self.to_protobuf(arg_type, param_dict)
+            self.ctx.logger.debug('REQUEST : method=%s; data=%s' % (func._method.decode(), protobuf))
+            response = func(protobuf, timeout=int(kwargs.get('timeout') or self.ctx.timeout))
+
+        try:
+
+            # streamed response is of type <grpc._channel._MultiThreadedRendezvous> and must be handle as list
+            if isinstance(response, _channel._MultiThreadedRendezvous):
+
+                return_list = []
+                for idx, list_item in enumerate(response):
+                    return_list.append(self._process_response(list_item, index=idx, **kwargs))
+
+                return return_list
+
+            else:
+
+                return self._process_response(response, **kwargs)
+
+        except grpc.RpcError as e:
+            if e.code().name == 'DEADLINE_EXCEEDED':
+                self.ctx.logger.error('TimeoutError (%ss): %s' % (kwargs.get('timeout') or self.ctx.timeout, e))
+                raise TimeoutError('no response within %s seconds' % (kwargs.get('timeout') or self.ctx.timeout))
+            else:
+                self.ctx.logger.error(e)
+                raise e
+
diff --git a/grpc_robot/services/voltha/voltha_4_0_13/__init__.py b/grpc_robot/services/voltha/voltha_4_0_13/__init__.py
new file mode 100644
index 0000000..66de09c
--- /dev/null
+++ b/grpc_robot/services/voltha/voltha_4_0_13/__init__.py
@@ -0,0 +1,18 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from .extension import *
+from .health_service import *
+from .openolt import *
+from .ponsim import *
+from .voltha_service import *
diff --git a/grpc_robot/services/voltha/voltha_4_0_13/extension.py b/grpc_robot/services/voltha/voltha_4_0_13/extension.py
new file mode 100644
index 0000000..ef379a1
--- /dev/null
+++ b/grpc_robot/services/voltha/voltha_4_0_13/extension.py
@@ -0,0 +1,41 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from voltha_protos import extensions_pb2_grpc, extensions_pb2
+
+
+class Extension(Service):
+
+    prefix = 'extension_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=extensions_pb2_grpc.ExtensionStub)
+
+    # rpc GetExtValue(SingleGetValueRequest) returns (SingleGetValueResponse);
+    @keyword
+    @is_connected
+    def extension_get_ext_value(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetExtValue, extensions_pb2.SingleGetValueRequest, param_dict, **kwargs)
+
+    # rpc SetExtValue(SingleSetValueRequest) returns (SingleSetValueResponse);
+    @keyword
+    @is_connected
+    def extension_set_ext_value(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetExtValue, extensions_pb2.SingleSetValueRequest, param_dict, **kwargs)
+
+
+
diff --git a/grpc_robot/services/voltha/voltha_4_0_13/health_service.py b/grpc_robot/services/voltha/voltha_4_0_13/health_service.py
new file mode 100644
index 0000000..72bb4f5
--- /dev/null
+++ b/grpc_robot/services/voltha/voltha_4_0_13/health_service.py
@@ -0,0 +1,32 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from voltha_protos import health_pb2_grpc
+
+
+class HealthService(Service):
+
+    prefix = 'health_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=health_pb2_grpc.HealthServiceStub)
+
+    # rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus) {...};
+    @keyword
+    @is_connected
+    def hw_management_service_get_health_status(self, **kwargs):
+        return self._grpc_helper(self.stub.GetHealthStatus, **kwargs)
diff --git a/grpc_robot/services/voltha/voltha_4_0_13/openolt.py b/grpc_robot/services/voltha/voltha_4_0_13/openolt.py
new file mode 100644
index 0000000..2b6a26c
--- /dev/null
+++ b/grpc_robot/services/voltha/voltha_4_0_13/openolt.py
@@ -0,0 +1,200 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from voltha_protos import openolt_pb2_grpc, openolt_pb2, tech_profile_pb2, ext_config_pb2
+
+
+class Openolt(Service):
+
+    prefix = 'open_olt_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=openolt_pb2_grpc.OpenoltStub)
+
+    # rpc DisableOlt(Empty) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_disable_olt(self, **kwargs):
+        return self._grpc_helper(self.stub.DisableOlt, **kwargs)
+
+    # rpc ReenableOlt(Empty) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_reenable_olt(self, **kwargs):
+        return self._grpc_helper(self.stub.ReenableOlt, **kwargs)
+
+    # rpc ActivateOnu(Onu) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_activate_onu(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ActivateOnu, openolt_pb2.Onu, param_dict, **kwargs)
+
+    # rpc DeactivateOnu(Onu) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_deactivate_onu(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DeactivateOnu, openolt_pb2.Onu, param_dict, **kwargs)
+
+    # rpc DeleteOnu(Onu) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_delete_onu(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DeleteOnu, openolt_pb2.Onu, param_dict, **kwargs)
+
+    # rpc OmciMsgOut(OmciMsg) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_omci_msg_out(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.OmciMsgOut, openolt_pb2.OmciMsg, param_dict, **kwargs)
+
+    # rpc OnuPacketOut(OnuPacket) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_onu_packet_out(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.OnuPacketOut, openolt_pb2.OnuPacket, param_dict, **kwargs)
+
+    # rpc UplinkPacketOut(UplinkPacket) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_uplink_packet_out(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UplinkPacketOut, openolt_pb2.UplinkPacket, param_dict, **kwargs)
+
+    # rpc FlowAdd(Flow) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_flow_add(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.FlowAdd, openolt_pb2.Flow, param_dict, **kwargs)
+
+    # rpc FlowRemove(Flow) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_flow_remove(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.FlowRemove, openolt_pb2.Flow, param_dict, **kwargs)
+
+    # rpc HeartbeatCheck(Empty) returns (Heartbeat) {...};
+    @keyword
+    @is_connected
+    def open_olt_heartbeat_check(self, **kwargs):
+        return self._grpc_helper(self.stub.HeartbeatCheck, **kwargs)
+
+    # rpc EnablePonIf(Interface) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_enable_pon_if(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.EnablePonIf, openolt_pb2.Interface, param_dict, **kwargs)
+
+    # rpc DisablePonIf(Interface) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_disable_pon_if(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DisablePonIf, openolt_pb2.Interface, param_dict, **kwargs)
+
+    # rpc GetDeviceInfo(Empty) returns (DeviceInfo) {...};
+    @keyword
+    @is_connected
+    def open_olt_get_device_info(self, **kwargs):
+        return self._grpc_helper(self.stub.GetDeviceInfo, **kwargs)
+
+    # rpc Reboot(Empty) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_reboot(self, **kwargs):
+        return self._grpc_helper(self.stub.Reboot, **kwargs)
+
+    # rpc CollectStatistics(Empty) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_collect_statistics(self, **kwargs):
+        return self._grpc_helper(self.stub.CollectStatistics, **kwargs)
+
+    # rpc GetOnuStatistics(Onu) returns (OnuStatistics) {...};
+    @keyword
+    @is_connected
+    def open_olt_get_onu_statistics(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetOnuStatistics, openolt_pb2.Onu, param_dict, **kwargs)
+
+    # rpc GetGemPortStatistics(OnuPacket) returns (GemPortStatistics) {...};
+    @keyword
+    @is_connected
+    def open_olt_get_gem_port_statistics(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetGemPortStatistics, openolt_pb2.OnuPacket, param_dict, **kwargs)
+
+    # rpc CreateTrafficSchedulers(tech_profile.TrafficSchedulers) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_create_traffic_schedulers(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.CreateTrafficSchedulers, tech_profile_pb2.TrafficSchedulers, param_dict, **kwargs)
+
+    # rpc RemoveTrafficSchedulers(tech_profile.TrafficSchedulers) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_remove_traffic_schedulers(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.RemoveTrafficSchedulers, tech_profile_pb2.TrafficSchedulers, param_dict, **kwargs)
+
+    # rpc CreateTrafficQueues(tech_profile.TrafficQueues) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_create_traffic_queues(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.CreateTrafficQueues, tech_profile_pb2.TrafficQueues, param_dict, **kwargs)
+
+    # rpc RemoveTrafficQueues(tech_profile.TrafficQueues) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_remove_traffic_queues(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.RemoveTrafficQueues, tech_profile_pb2.TrafficQueues, param_dict, **kwargs)
+
+    # rpc EnableIndication(Empty) returns (stream Indication) {...};
+    @keyword
+    @is_connected
+    def open_olt_enable_indication(self, **kwargs):
+        return self._grpc_helper(self.stub.EnableIndication, **kwargs)
+
+    # rpc PerformGroupOperation(Group) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_perform_group_operation(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.PerformGroupOperation, openolt_pb2.Group, param_dict, **kwargs)
+
+    # rpc DeleteGroup(Group) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_delete_group(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DeleteGroup, openolt_pb2.Group, param_dict, **kwargs)
+
+    # rpc GetExtValue(ValueParam) returns (common.ReturnValues) {...};
+    @keyword
+    @is_connected
+    def open_olt_get_ext_value(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetExtValue, openolt_pb2.ValueParam, param_dict, **kwargs)
+
+    # rpc OnuItuPonAlarmSet(config.OnuItuPonAlarm) returns (Empty) {...};
+    @keyword
+    @is_connected
+    def open_olt_onu_itu_pon_alarm_set(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.OnuItuPonAlarmSet, ext_config_pb2.OnuItuPonAlarm, param_dict, **kwargs)
+
+    # rpc GetLogicalOnuDistanceZero(Onu) returns (OnuLogicalDistance) {...};
+    @keyword
+    @is_connected
+    def open_olt_get_logical_onu_distance_zero(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLogicalOnuDistanceZero, openolt_pb2.Onu, param_dict, **kwargs)
+
+    # rpc GetLogicalOnuDistance(Onu) returns (OnuLogicalDistance) {...};
+    @keyword
+    @is_connected
+    def open_olt_get_logical_onu_distance(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLogicalOnuDistanceF, openolt_pb2.Onu, param_dict, **kwargs)
diff --git a/grpc_robot/services/voltha/voltha_4_0_13/ponsim.py b/grpc_robot/services/voltha/voltha_4_0_13/ponsim.py
new file mode 100644
index 0000000..579a66d
--- /dev/null
+++ b/grpc_robot/services/voltha/voltha_4_0_13/ponsim.py
@@ -0,0 +1,56 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from voltha_protos import ponsim_pb2_grpc, ponsim_pb2
+
+
+class PonSim(Service):
+
+    prefix = 'pon_sim_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=ponsim_pb2_grpc.PonSimStub)
+
+    # rpc SendFrame(PonSimFrame) returns (google.protobuf.Empty) {}
+    @keyword
+    @is_connected
+    def pon_sim_send_frame(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SendFrame, ponsim_pb2.PonSimFrame, param_dict, **kwargs)
+
+    # rpc ReceiveFrames(google.protobuf.Empty) returns (stream PonSimFrame) {}
+    @keyword
+    @is_connected
+    def pon_sim_receive_frames(self, **kwargs):
+        return self._grpc_helper(self.stub.ReceiveFrames, **kwargs)
+
+    # rpc GetDeviceInfo(google.protobuf.Empty) returns(PonSimDeviceInfo) {}
+    @keyword
+    @is_connected
+    def pon_sim_get_device_info(self, **kwargs):
+        return self._grpc_helper(self.stub.GetDeviceInfo, **kwargs)
+
+    # rpc UpdateFlowTable(FlowTable) returns(google.protobuf.Empty) {}
+    @keyword
+    @is_connected
+    def pon_sim_update_flow_table(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateFlowTable, ponsim_pb2.FlowTable, param_dict, **kwargs)
+
+    # rpc GetStats(google.protobuf.Empty) returns(PonSimMetrics) {}
+    @keyword
+    @is_connected
+    def pon_sim_get_stats(self, **kwargs):
+        return self._grpc_helper(self.stub.GetStats, **kwargs)
diff --git a/grpc_robot/services/voltha/voltha_4_0_13/voltha_service.py b/grpc_robot/services/voltha/voltha_4_0_13/voltha_service.py
new file mode 100644
index 0000000..66c5099
--- /dev/null
+++ b/grpc_robot/services/voltha/voltha_4_0_13/voltha_service.py
@@ -0,0 +1,404 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from robot.api.deco import keyword
+from grpc_robot.services.service import is_connected
+
+from grpc_robot.services.service import Service
+from voltha_protos import voltha_pb2_grpc, voltha_pb2, common_pb2, openflow_13_pb2
+
+
+class VolthaService(Service):
+
+    prefix = 'voltha_service_'
+
+    def __init__(self, ctx):
+        super().__init__(ctx=ctx, stub=voltha_pb2_grpc.VolthaServiceStub)
+
+    # rpc GetMembership(google.protobuf.Empty) returns(Membership) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_membership(self, **kwargs):
+        return self._grpc_helper(self.stub.GetMembership, **kwargs)
+
+    # rpc UpdateMembership(Membership) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_update_membership(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateMembership, voltha_pb2.Membership, param_dict, **kwargs)
+
+    # rpc GetVoltha(google.protobuf.Empty) returns(Voltha) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_voltha(self, **kwargs):
+        return self._grpc_helper(self.stub.GetVoltha, **kwargs)
+
+    # rpc ListCoreInstances(google.protobuf.Empty) returns(CoreInstances) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_core_instances(self, **kwargs):
+        return self._grpc_helper(self.stub.ListCoreInstances, **kwargs)
+
+    # rpc GetCoreInstance(common.ID) returns(CoreInstance) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_core_instance(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetCoreInstance, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc ListAdapters(google.protobuf.Empty) returns(Adapters) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_adapters(self, **kwargs):
+        return self._grpc_helper(self.stub.ListAdapters, **kwargs)
+
+    # rpc ListLogicalDevices(google.protobuf.Empty) returns(LogicalDevices) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_logical_devices(self, **kwargs):
+        return self._grpc_helper(self.stub.ListLogicalDevices, **kwargs)
+
+    # rpc GetLogicalDevice(common.ID) returns(LogicalDevice) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_logical_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLogicalDevice, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc ListLogicalDevicePorts(common.ID) returns(LogicalPorts) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_logical_device_ports(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListLogicalDevicePorts, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc GetLogicalDevicePort(LogicalPortId) returns(LogicalPort) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_logical_device_port(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetLogicalDevicePort, voltha_pb2.LogicalPortId, param_dict, **kwargs)
+
+    # rpc EnableLogicalDevicePort(LogicalPortId) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_enable_logical_device_port(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.EnableLogicalDevicePort, voltha_pb2.LogicalPortId, param_dict, **kwargs)
+
+    # rpc DisableLogicalDevicePort(LogicalPortId) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_disable_logical_device_port(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DisableLogicalDevicePort, voltha_pb2.LogicalPortId, param_dict, **kwargs)
+
+    # rpc ListLogicalDeviceFlows(common.ID) returns(openflow_13.Flows) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_logical_device_flows(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListLogicalDeviceFlows, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc UpdateLogicalDeviceFlowTable(openflow_13.FlowTableUpdate) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_update_logical_device_flow_table(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateLogicalDeviceFlowTable, openflow_13_pb2.FlowTableUpdate, param_dict, **kwargs)
+
+    # rpc UpdateLogicalDeviceMeterTable(openflow_13.MeterModUpdate) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_update_logical_device_meter_table(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateLogicalDeviceMeterTable, openflow_13_pb2.MeterModUpdate, param_dict, **kwargs)
+
+    # rpc ListLogicalDeviceMeters(common.ID) returns (openflow_13.Meters) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_logical_device_meters(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListLogicalDeviceMeters, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc ListLogicalDeviceFlowGroups(common.ID) returns(openflow_13.FlowGroups) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_logical_device_flow_groups(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListLogicalDeviceFlowGroups, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc UpdateLogicalDeviceFlowGroupTable(openflow_13.FlowGroupTableUpdate) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_update_logical_device_flow_group_table(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateLogicalDeviceFlowGroupTable, openflow_13_pb2.FlowGroupTableUpdate, param_dict, **kwargs)
+
+    # rpc ListDevices(google.protobuf.Empty) returns(Devices) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_devices(self, **kwargs):
+        return self._grpc_helper(self.stub.ListDevices, **kwargs)
+
+    # rpc ListDeviceIds(google.protobuf.Empty) returns(common.IDs) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_device_ids(self, **kwargs):
+        return self._grpc_helper(self.stub.ListDeviceIds, **kwargs)
+
+    # rpc ReconcileDevices(common.IDs) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_reconcile_devices(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ReconcileDevices, common_pb2.IDs, param_dict, **kwargs)
+
+    # rpc GetDevice(common.ID) returns(Device) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetDevice, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc CreateDevice(Device) returns(Device) {...};
+    @keyword
+    @is_connected
+    def voltha_service_create_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.CreateDevice, voltha_pb2.Device, param_dict, **kwargs)
+
+    # rpc EnableDevice(common.ID) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_enable_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.EnableDevice, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc DisableDevice(common.ID) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_disable_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DisableDevice, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc RebootDevice(common.ID) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_reboot_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.RebootDevice, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc DeleteDevice(common.ID) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_delete_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DeleteDevice, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc ForceDeleteDevice(common.ID) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_force_delete_device(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ForceDeleteDevice, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc DownloadImage(ImageDownload) returns(common.OperationResp) {...};
+    @keyword
+    @is_connected
+    def voltha_service_download_image(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DownloadImage, voltha_pb2.ImageDownload, param_dict, **kwargs)
+
+    # rpc GetImageDownloadStatus(ImageDownload) returns(ImageDownload) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_image_download_status(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetImageDownloadStatus, voltha_pb2.ImageDownload, param_dict, **kwargs)
+
+    # rpc GetImageDownload(ImageDownload) returns(ImageDownload) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_image_download(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetImageDownload, voltha_pb2.ImageDownload, param_dict, **kwargs)
+
+    # rpc ListImageDownloads(common.ID) returns(ImageDownloads) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_image_downloads(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListImageDownloads, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc CancelImageDownload(ImageDownload) returns(common.OperationResp) {...};
+    @keyword
+    @is_connected
+    def voltha_service_cancel_image_download(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.CancelImageDownload, voltha_pb2.ImageDownload, param_dict, **kwargs)
+
+    # rpc ActivateImageUpdate(ImageDownload) returns(common.OperationResp) {...};
+    @keyword
+    @is_connected
+    def voltha_service_activate_image_update(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ActivateImageUpdate, voltha_pb2.ImageDownload, param_dict, **kwargs)
+
+    # rpc RevertImageUpdate(ImageDownload) returns(common.OperationResp) {...};
+    @keyword
+    @is_connected
+    def voltha_service_revert_image_update(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.RevertImageUpdate, voltha_pb2.ImageDownload, param_dict, **kwargs)
+
+    # rpc ListDevicePorts(common.ID) returns(Ports) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_device_ports(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListDevicePorts, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc ListDevicePmConfigs(common.ID) returns(PmConfigs) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_device_pm_configs(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListDevicePmConfigs, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc UpdateDevicePmConfigs(voltha.PmConfigs) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_update_device_pm_configs(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateDevicePmConfigs, voltha_pb2.PmConfigs, param_dict, **kwargs)
+
+    # rpc ListDeviceFlows(common.ID) returns(openflow_13.Flows) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_device_flows(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListDeviceFlows, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc ListDeviceFlowGroups(common.ID) returns(openflow_13.FlowGroups) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_device_flow_groups(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.ListDeviceFlowGroups, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc ListDeviceTypes(google.protobuf.Empty) returns(DeviceTypes) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_device_types(self, **kwargs):
+        return self._grpc_helper(self.stub.ListDeviceTypes, **kwargs)
+
+    # rpc GetDeviceType(common.ID) returns(DeviceType) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_device_type(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetDeviceType, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc ListDeviceGroups(google.protobuf.Empty) returns(DeviceGroups) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_device_groups(self, **kwargs):
+        return self._grpc_helper(self.stub.ListDeviceGroups, **kwargs)
+
+    # rpc StreamPacketsOut(stream openflow_13.PacketOut) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_stream_packets_out(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StreamPacketsOut, openflow_13_pb2.PacketOut, param_dict, **kwargs)
+
+    # rpc ReceivePacketsIn(google.protobuf.Empty) returns(stream openflow_13.PacketIn) {...};
+    @keyword
+    @is_connected
+    def voltha_service_receive_packets_in(self, **kwargs):
+        return self._grpc_helper(self.stub.ReceivePacketsIn, **kwargs)
+
+    # rpc ReceiveChangeEvents(google.protobuf.Empty) returns(stream openflow_13.ChangeEvent) {...};
+    @keyword
+    @is_connected
+    def voltha_service_receive_change_events(self, **kwargs):
+        return self._grpc_helper(self.stub.ReceiveChangeEvents, **kwargs)
+
+    # rpc GetDeviceGroup(common.ID) returns(DeviceGroup) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_device_group(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetDeviceGroup, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc CreateEventFilter(EventFilter) returns(EventFilter) {...};
+    @keyword
+    @is_connected
+    def voltha_service_create_event_filter(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.CreateEventFilter, voltha_pb2.EventFilter, param_dict, **kwargs)
+
+    # rpc GetEventFilter(common.ID) returns(EventFilters) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_event_filter(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetEventFilter, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc UpdateEventFilter(EventFilter) returns(EventFilter) {...};
+    @keyword
+    @is_connected
+    def voltha_service_update_event_filter(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.UpdateEventFilter, voltha_pb2.EventFilter, param_dict, **kwargs)
+
+    # rpc DeleteEventFilter(EventFilter) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_delete_event_filter(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DeleteEventFilter, voltha_pb2.EventFilter, param_dict, **kwargs)
+
+    # rpc ListEventFilters(google.protobuf.Empty) returns(EventFilters) {...};
+    @keyword
+    @is_connected
+    def voltha_service_list_event_filters(self, **kwargs):
+        return self._grpc_helper(self.stub.ListEventFilters, **kwargs)
+
+    # rpc GetImages(common.ID) returns(Images) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_images(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetImages, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc SelfTest(common.ID) returns(SelfTestResponse) {...};
+    @keyword
+    @is_connected
+    def voltha_service_self_test(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SelfTest, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc GetMibDeviceData(common.ID) returns(omci.MibDeviceData) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_mib_device_data(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetMibDeviceData, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc GetAlarmDeviceData(common.ID) returns(omci.AlarmDeviceData) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_alarm_device_data(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetAlarmDeviceData, common_pb2.ID, param_dict, **kwargs)
+
+    # rpc SimulateAlarm(SimulateAlarmRequest) returns(common.OperationResp) {...};
+    @keyword
+    @is_connected
+    def voltha_service_simulate_alarm(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SimulateAlarm, voltha_pb2.SimulateAlarmRequest, param_dict, **kwargs)
+
+    # rpc Subscribe (OfAgentSubscriber) returns (OfAgentSubscriber) {...};
+    @keyword
+    @is_connected
+    def voltha_service_subscribe(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.Subscribe, voltha_pb2.OfAgentSubscriber, param_dict, **kwargs)
+
+    # rpc EnablePort(voltha.Port) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_enable_port(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.EnablePort, voltha_pb2.Port, param_dict, **kwargs)
+
+    # rpc DisablePort(voltha.Port) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_disable_port(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.DisablePort, voltha_pb2.Port, param_dict, **kwargs)
+
+    # rpc GetExtValue(common.ValueSpecifier) returns(common.ReturnValues) {...};
+    @keyword
+    @is_connected
+    def voltha_service_get_ext_value(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.GetExtValue, common_pb2.ValueSpecifier, param_dict, **kwargs)
+
+    # rpc SetExtValue(ValueSet) returns(google.protobuf.Empty) {...};
+    @keyword
+    @is_connected
+    def voltha_service_set_ext_value(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.SetExtValue, voltha_pb2.ValueSet, param_dict, **kwargs)
+
+    # rpc StartOmciTestAction(OmciTestRequest) returns(TestResponse) {...};
+    @keyword
+    @is_connected
+    def voltha_service_start_omci_test_action(self, param_dict, **kwargs):
+        return self._grpc_helper(self.stub.StartOmciTestAction, voltha_pb2.OmciTestRequest, param_dict, **kwargs)
diff --git a/grpc_robot/services/voltha/voltha_4_2_0/__init__.py b/grpc_robot/services/voltha/voltha_4_2_0/__init__.py
new file mode 100644
index 0000000..d482d83
--- /dev/null
+++ b/grpc_robot/services/voltha/voltha_4_2_0/__init__.py
@@ -0,0 +1,18 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from ..voltha_4_0_13.extension import *
+from ..voltha_4_0_13.health_service import *
+from ..voltha_4_0_13.openolt import *
+from ..voltha_4_0_13.ponsim import *
+from ..voltha_4_0_13.voltha_service import *
diff --git a/grpc_robot/tools/__init__.py b/grpc_robot/tools/__init__.py
new file mode 100644
index 0000000..b1ed822
--- /dev/null
+++ b/grpc_robot/tools/__init__.py
@@ -0,0 +1,13 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
diff --git a/grpc_robot/tools/dmi_tools.py b/grpc_robot/tools/dmi_tools.py
new file mode 100644
index 0000000..5bdb168
--- /dev/null
+++ b/grpc_robot/tools/dmi_tools.py
@@ -0,0 +1,84 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from grpc_robot.grpc_robot import _package_version_get
+
+from dmi import hw_metrics_mgmt_service_pb2, hw_events_mgmt_service_pb2
+from ..tools.protobuf_to_dict import protobuf_to_dict
+
+
+class DmiTools(object):
+    """
+    Tools for the device-management-interface, e.g decoding / conversions.
+    """
+
+    try:
+        ROBOT_LIBRARY_VERSION = _package_version_get('grpc_robot')
+    except NameError:
+        ROBOT_LIBRARY_VERSION = 'unknown'
+
+    @staticmethod
+    def hw_metrics_mgmt_decode_metric(bytestring, return_enum_integer='false', return_defaults='false', human_readable_timestamps='true'):
+        """
+        Converts bytes to a Metric as defined in _message Metric_ from hw_metrics_mgmt_service.proto
+
+        *Parameters*:
+        - bytestring: <bytes>; Byte string, e.g. as it comes from Kafka messages.
+        - return_enum_integer: <string> or <bool>; Whether or not to return the enum values as integer values rather than their labels. Default: _false_.
+        - return_defaults: <string> or <bool>; Whether or not to return the default values. Default: _false_.
+        - human_readable_timestamps: <string> or <bool>; Whether or not to convert the timestamps to human-readable format. Default: _true_.
+
+        *Return*: A dictionary with same structure as the _metric_ key from the return dictionary of keyword _Hw Metrics Mgmt Service Get Metric_.
+
+        *Example*:
+        | Import Library | grpc_robot.DmiTools | WITH NAME | dmi_tools |
+        | ${kafka_records} | kafka.Records Get |
+        | FOR | ${kafka_record} | IN | @{kafka_records} |
+        |  | ${metric} | dmi_tools.Hw Metrics Mgmt Decode Metric | ${kafka_record}[message] |
+        |  | Log | ${metric} |
+        | END |
+        """
+        return_enum_integer = str(return_enum_integer).lower() == 'true'
+        metric = hw_metrics_mgmt_service_pb2.Metric.FromString(bytestring)
+        return protobuf_to_dict(metric,
+                                use_enum_labels=not return_enum_integer,
+                                including_default_value_fields=str(return_defaults).lower() == 'true',
+                                human_readable_timestamps=str(human_readable_timestamps).lower() == 'true')
+
+    @staticmethod
+    def hw_events_mgmt_decode_event(bytestring, return_enum_integer='false', return_defaults='false', human_readable_timestamps='true'):
+        """
+        Converts bytes to a Event as defined in _message Event_ from hw_events_mgmt_service.proto
+
+        *Parameters*:
+        - bytestring: <bytes>; Byte string, e.g. as it comes from Kafka messages.
+        - return_enum_integer: <string> or <bool>; Whether or not to return the enum values as integer values rather than their labels. Default: _false_.
+        - return_defaults: <string> or <bool>; Whether or not to return the default values. Default: _false_.
+        - human_readable_timestamps: <string> or <bool>; Whether or not to convert the timestamps to human-readable format. Default: _true_.
+
+        *Return*: A dictionary with same structure as the _event_ key from the return dictionary of keyword _Hw Event Mgmt Service List Events_.
+
+        *Example*:
+        | Import Library | grpc_robot.DmiTools | WITH NAME | dmi_tools |
+        | ${kafka_records} | kafka.Records Get |
+        | FOR | ${kafka_record} | IN | @{kafka_records} |
+        |  | ${event} | dmi_tools.Hw Events Mgmt Decode Event | ${kafka_record}[message] |
+        |  | Log | ${event} |
+        | END |
+        """
+        return_enum_integer = str(return_enum_integer).lower() == 'true'
+        event = hw_events_mgmt_service_pb2.Event.FromString(bytestring)
+        return protobuf_to_dict(event,
+                                use_enum_labels=not return_enum_integer,
+                                including_default_value_fields=str(return_defaults).lower() == 'true',
+                                human_readable_timestamps=str(human_readable_timestamps).lower() == 'true')
diff --git a/grpc_robot/tools/protobuf_parse.py b/grpc_robot/tools/protobuf_parse.py
new file mode 100644
index 0000000..f11e1a3
--- /dev/null
+++ b/grpc_robot/tools/protobuf_parse.py
@@ -0,0 +1,456 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# -*- coding: utf-8 -*-
+
+# Parser for protocol buffer .proto files
+import enum as stdlib_enum
+from string import ascii_letters, digits, hexdigits, octdigits
+
+import attr
+
+from parsy import char_from, from_enum, generate, regex, seq, string
+
+# This file follows the spec at
+# https://developers.google.com/protocol-buffers/docs/reference/proto3-spec
+# very closely.
+
+# However, because we are parsing into useful objects, we do transformations
+# along the way e.g. turning into integers, strings etc. and custom objects.
+# Some of the lowest level items have been implemented using 'regex' and converting
+# the descriptions to regular expressions. Higher level constructs have been
+# implemented using other parsy primitives and combinators.
+
+# Notes:
+
+# 1. Whitespace is very badly defined in the 'spec', so we guess what is meant.
+# 2. The spec doesn't allow for comments, and neither does this parser.
+#    Other places mention that C++ style comments are allowed. To support that,
+#    this parser would need to be changed into split lexing/parsing stages
+#    (otherwise you hit issues with comments start markers within string literals).
+# 3. Other notes inline.
+
+
+# Our utilities
+optional_string = lambda s: string(s).times(0, 1).concat()
+convert_decimal = int
+convert_octal = lambda s: int(s, 8)
+convert_hex = lambda s: int(s, 16)
+exclude_none = lambda l: [i for i in l if i is not None]
+
+
+def lexeme(p):
+    """
+    From a parser (or string), make a parser that consumes
+    whitespace on either side.
+    """
+    if isinstance(p, str):
+        p = string(p)
+    return regex(r'\s*') >> p << regex(r'\s*')
+
+
+def is_present(p):
+    """
+    Given a parser or string, make a parser that returns
+    True if the parser matches, False otherwise
+    """
+    return lexeme(p).optional().map(lambda v: False if v is None else True)
+
+
+# Our data structures
+@attr.s
+class Import:
+    identifier = attr.ib()
+    option = attr.ib()
+
+
+@attr.s
+class Package:
+    identifer = attr.ib()
+
+
+@attr.s
+class Option:
+    name = attr.ib()
+    value = attr.ib()
+
+
+@attr.s
+class Field:
+    repeated = attr.ib()
+    type = attr.ib()
+    name = attr.ib()
+    number = attr.ib()
+    options = attr.ib()
+
+
+@attr.s
+class OneOfField:
+    type = attr.ib()
+    name = attr.ib()
+    number = attr.ib()
+    options = attr.ib()
+
+
+@attr.s
+class OneOf:
+    name = attr.ib()
+    fields = attr.ib()
+
+
+@attr.s
+class Map:
+    key_type = attr.ib()
+    type = attr.ib()
+    name = attr.ib()
+    number = attr.ib()
+    options = attr.ib()
+
+
+@attr.s
+class Reserved:
+    items = attr.ib()
+
+
+@attr.s
+class Range:
+    from_ = attr.ib()
+    to = attr.ib()
+
+
+@attr.s
+class EnumField:
+    name = attr.ib()
+    value = attr.ib()
+    options = attr.ib()
+
+
+@attr.s
+class Enum:
+    name = attr.ib()
+    body = attr.ib()
+
+
+@attr.s
+class Message:
+    name = attr.ib()
+    body = attr.ib()
+
+
+@attr.s
+class Service:
+    name = attr.ib()
+    body = attr.ib()
+
+
+@attr.s
+class Rpc:
+    name = attr.ib()
+    request_stream = attr.ib()
+    request_message_type = attr.ib()
+    response_stream = attr.ib()
+    response_message_type = attr.ib()
+    options = attr.ib()
+
+
+@attr.s
+class Proto:
+    syntax = attr.ib()
+    statements = attr.ib()
+
+
+# Enums:
+class ImportOption(stdlib_enum.Enum):
+    WEAK = "weak"
+    PUBLIC = "public"
+
+
+class Type(stdlib_enum.Enum):
+    DOUBLE = "double"
+    FLOAT = "float"
+    INT32 = "int32"
+    INT64 = "int64"
+    UINT32 = "uint32"
+    UINT64 = "uint64"
+    SINT32 = "sint32"
+    SINT64 = "sint64"
+    FIXED32 = "fixed32"
+    FIXED64 = "fixed64"
+    SFIXED32 = "sfixed32"
+    SFIXED64 = "sfixed64"
+    BOOL = "bool"
+    STRING = "string"
+    BYTES = "bytes"
+
+
+class KeyType(stdlib_enum.Enum):
+    INT32 = "int32"
+    INT64 = "int64"
+    UINT32 = "uint32"
+    UINT64 = "uint64"
+    SINT32 = "sint32"
+    SINT64 = "sint64"
+    FIXED32 = "fixed32"
+    FIXED64 = "fixed64"
+    SFIXED32 = "sfixed32"
+    SFIXED64 = "sfixed64"
+    BOOL = "bool"
+    STRING = "string"
+
+
+# Some extra constants to avoid typing
+SEMI, EQ, LPAREN, RPAREN, LBRACE, RBRACE, LBRAC, RBRAC = [lexeme(c) for c in ";=(){}[]"]
+
+
+# -- Beginning of following spec --
+# Letters and digits
+letter = char_from(ascii_letters)
+decimalDigit = char_from(digits)
+octalDigit = char_from(octdigits)
+hexDigit = char_from(hexdigits)
+
+# Identifiers
+
+# Compared to spec, we add some '_' prefixed items which are not wrapped in `lexeme`,
+# on the assumption that spaces in the middle of identifiers are not accepted.
+_ident = (letter + (letter | decimalDigit | string("_")).many().concat()).desc('ident')
+ident = lexeme(_ident)
+fullIdent = lexeme(ident + (string(".") + ident).many().concat()).desc('fullIdent')
+_messageName = _ident
+messageName = lexeme(ident).desc('messageName')
+_enumName = ident
+enumName = lexeme(_enumName).desc('enumName')
+fieldName = ident.desc('fieldName')
+oneofName = ident.desc('oneofName')
+mapName = ident.desc('mapName')
+serviceName = ident.desc('serviceName')
+rpcName = ident.desc('rpcName')
+messageType = optional_string(".") + (_ident + string(".")).many().concat() + _messageName
+enumType = optional_string(".") + (_ident + string(".")).many().concat() + _enumName
+
+# Integer literals
+decimalLit = regex("[1-9][0-9]*").desc('decimalLit').map(convert_decimal)
+octalLit = regex("0[0-7]*").desc('octalLit').map(convert_octal)
+hexLit = regex("0[x|X][0-9a-fA-F]+").desc('octalLit').map(convert_hex)
+intLit     = decimalLit | octalLit | hexLit
+
+
+# Floating-point literals
+decimals = r'[0-9]+'
+exponent = r'[e|E][+|-]?' + decimals
+floatLit = regex(r'({decimals}\.({decimals})?({exponent})?)|{decimals}{exponent}|\.{decimals}({exponent})?'
+                 .format(decimals=decimals, exponent=exponent)).desc('floatLit').map(float)
+
+
+# Boolean
+boolLit = (string("true").result(True) | string("false").result(False)).desc('boolLit')
+
+
+# String literals
+hexEscape = regex(r"\\[x|X]") >> regex("[0-9a-fA-F]{2}").map(convert_hex).map(chr)
+octEscape = regex(r"\\") >> regex('[0-7]{2}').map(convert_octal).map(chr)
+charEscape = regex(r"\\") >> (
+    string("a").result("\a")
+    | string("b").result("\b")
+    | string("f").result("\f")
+    | string("n").result("\n")
+    | string("r").result("\r")
+    | string("t").result("\t")
+    | string("v").result("\v")
+    | string("\\").result("\\")
+    | string("'").result("'")
+    | string('"').result('"')
+)
+escapes = hexEscape | octEscape | charEscape
+# Correction to spec regarding " and ' inside quoted strings
+strLit = (string("'") >> (escapes | regex(r"[^\0\n\'\\]")).many().concat() << string("'")
+          | string('"') >> (escapes | regex(r"[^\0\n\"\\]")).many().concat() << string('"')).desc('strLit')
+quote = string("'") | string('"')
+
+# EmptyStatement
+emptyStatement = string(";").result(None)
+
+# Signed numbers:
+# (Extra compared to spec, to cope with need to produce signed numeric values)
+signedNumberChange = lambda s, num: (-1) if s == "-" else (+1)
+sign = regex("[-+]?")
+signedIntLit = seq(sign, intLit).combine(signedNumberChange)
+signedFloatLit = seq(sign, floatLit).combine(signedNumberChange)
+
+
+# Constant
+# put fullIdent at end to disabmiguate from boolLit
+constant = signedIntLit | signedFloatLit | strLit | boolLit | fullIdent
+
+# Syntax
+syntax = lexeme("syntax") >> EQ >> quote >> string("proto3") << quote + SEMI
+
+# Import Statement
+import_option = from_enum(ImportOption)
+
+import_ = seq(lexeme("import") >> import_option.optional().tag('option'),
+              lexeme(strLit).tag('identifier') << SEMI).combine_dict(Import)
+
+# Package
+package = seq(lexeme("package") >> fullIdent << SEMI).map(Package)
+
+# Option
+optionName = (ident | (LPAREN >> fullIdent << RPAREN)) + (string(".") + ident).many().concat()
+option = seq(lexeme("option") >> optionName.tag('name'),
+             EQ >> constant.tag('value') << SEMI,
+             ).combine_dict(Option)
+
+# Normal field
+type_ = lexeme(from_enum(Type) | messageType | enumType)
+fieldNumber = lexeme(intLit)
+
+fieldOption = seq(optionName.tag('name'),
+                  EQ >> constant.tag('value')).combine_dict(Option)
+fieldOptions = fieldOption.sep_by(lexeme(","), min=1)
+fieldOptionList = (lexeme("[") >> fieldOptions << lexeme("]")).optional().map(
+    lambda o: [] if o is None else o)
+
+field = seq(is_present("repeated").tag('repeated'),
+            type_.tag('type'),
+            fieldName.tag('name') << EQ,
+            fieldNumber.tag('number'),
+            fieldOptionList.tag('options') << SEMI,
+            ).combine_dict(Field)
+
+# Oneof and oneof field
+oneofField = seq(type_.tag('type'),
+                 fieldName.tag('name') << EQ,
+                 fieldNumber.tag('number'),
+                 fieldOptionList.tag('options') << SEMI,
+                 ).combine_dict(OneOfField)
+oneof = seq(lexeme("oneof") >> oneofName.tag('name'),
+            LBRACE
+            >> (oneofField | emptyStatement).many().map(exclude_none).tag('fields')
+            << RBRACE
+            ).combine_dict(OneOf)
+
+# Map field
+keyType = lexeme(from_enum(KeyType))
+mapField = seq(lexeme("map") >> lexeme("<") >> keyType.tag('key_type'),
+               lexeme(",") >> type_.tag('type'),
+               lexeme(">") >> mapName.tag('name'),
+               EQ >> fieldNumber.tag('number'),
+               fieldOptionList.tag('options') << SEMI
+               ).combine_dict(Map)
+
+# Reserved
+range_ = seq(lexeme(intLit).tag('from_'),
+             (lexeme("to") >> (intLit | lexeme("max"))).optional().tag('to')
+             ).combine_dict(Range)
+ranges = range_.sep_by(lexeme(","), min=1)
+# The spec for 'reserved' indicates 'fieldName' here, which is never a quoted string.
+# But the example has a quoted string. We have changed it to 'strLit'
+fieldNames = strLit.sep_by(lexeme(","), min=1)
+reserved = seq(lexeme("reserved") >> (ranges | fieldNames) << SEMI
+               ).combine(Reserved)
+
+# Enum definition
+enumValueOption = seq(optionName.tag('name') << EQ,
+                      constant.tag('value')
+                      ).combine_dict(Option)
+enumField = seq(ident.tag('name') << EQ,
+                lexeme(intLit).tag('value'),
+                (lexeme("[") >> enumValueOption.sep_by(lexeme(","), min=1) << lexeme("]")).optional()
+                .map(lambda o: [] if o is None else o).tag('options')
+                << SEMI
+                ).combine_dict(EnumField)
+enumBody = (LBRACE
+            >> (option | enumField | emptyStatement).many().map(exclude_none)
+            << RBRACE)
+enum = seq(lexeme("enum") >> enumName.tag('name'),
+           enumBody.tag('body')
+           ).combine_dict(Enum)
+
+
+# Message definition
+@generate
+def message():
+    yield lexeme("message")
+    name = yield messageName
+    body = yield messageBody
+    return Message(name=name, body=body)
+
+
+messageBody = (LBRACE
+               >> (field | enum | message | option | oneof | mapField
+                   | reserved | emptyStatement).many()
+               << RBRACE)
+
+
+# Service definition
+rpc = seq(lexeme("rpc") >> rpcName.tag('name'),
+          LPAREN
+          >> (is_present("stream").tag("request_stream")),
+          messageType.tag("request_message_type") << RPAREN,
+          lexeme("returns") >> LPAREN
+          >> (is_present("stream").tag("response_stream")),
+          messageType.tag("response_message_type")
+          << RPAREN,
+          ((LBRACE
+           >> (option | emptyStatement).many()
+           << RBRACE)
+           | SEMI.result([])
+           ).optional().map(exclude_none).tag('options')
+          ).combine_dict(Rpc)
+
+service = seq(lexeme("service") >> serviceName.tag('name'),
+              LBRACE
+              >> (option | rpc | emptyStatement).many().map(exclude_none).tag('body')
+              << RBRACE
+              ).combine_dict(Service)
+
+
+# Proto file
+topLevelDef = message | enum | service
+proto = seq(syntax.tag('syntax'),
+            (import_ | package | option | topLevelDef | emptyStatement
+             ).many().map(exclude_none).tag('statements')
+            ).combine_dict(Proto)
+
+
+EXAMPLE = """syntax = "proto3";
+import public "other.proto";
+option java_package = "com.example.foo";
+option java_package = "com.example.foo";
+package dmi;
+
+enum EnumAllowingAlias {
+  option allow_alias = true;
+  UNKNOWN = 0;
+  STARTED = 1;
+  RUNNING = 2 [(custom_option) = "hello world"];
+}
+message outer {
+  option (my_option).a = true;
+  message inner {
+    int64 ival = 1;
+  }
+  repeated inner inner_message = 2;
+  EnumAllowingAlias enum_field =3;
+  map<int32, string> my_map = 4;
+  oneof operation {
+    MetricsConfig changes = 2;
+    bool reset_to_default = 3;
+  }
+}
+"""
+# Smoke test - should find 4 top level statements in the example:
+# assert len(proto.parse(EXAMPLE).statements) == 4
+# print(proto.parse(EXAMPLE).statements)
+# for st in proto.parse(EXAMPLE).statements:
+#     print(type(st))
diff --git a/grpc_robot/tools/protobuf_to_dict.py b/grpc_robot/tools/protobuf_to_dict.py
new file mode 100644
index 0000000..19ebf1a
--- /dev/null
+++ b/grpc_robot/tools/protobuf_to_dict.py
@@ -0,0 +1,281 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+
+# This is free and unencumbered software released into the public domain
+# by its author, Ben Hodgson <ben@benhodgson.com>.
+#
+# Anyone is free to copy, modify, publish, use, compile, sell, or
+# distribute this software, either in source code form or as a compiled
+# binary, for any purpose, commercial or non-commercial, and by any
+# means.
+#
+# In jurisdictions that recognise copyright laws, the author or authors
+# of this software dedicate any and all copyright interest in the
+# software to the public domain. We make this dedication for the benefit
+# of the public at large and to the detriment of our heirs and
+# successors. We intend this dedication to be an overt act of
+# relinquishment in perpetuity of all present and future rights to this
+# software under copyright law.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+#
+# For more information, please refer to <http://unlicense.org/>
+
+
+# -*- coding:utf-8 -*-
+
+# copied from https://github.com/kaporzhu/protobuf-to-dict
+# all credits to this script go to Kapor Zhu (kapor.zhu@gmail.com)
+#
+# Comments:
+# - need a fix for bug: "Use enum_label when setting the default value if use_enum_labels is true" (line 95)
+# - try to convert timestaps to a human readable format
+
+import base64
+
+import six
+from datetime import datetime
+
+from google.protobuf.message import Message
+from google.protobuf.descriptor import FieldDescriptor
+
+
+__all__ = ["protobuf_to_dict", "TYPE_CALLABLE_MAP", "dict_to_protobuf",
+           "REVERSE_TYPE_CALLABLE_MAP"]
+
+
+EXTENSION_CONTAINER = '___X'
+
+
+TYPE_CALLABLE_MAP = {
+    FieldDescriptor.TYPE_DOUBLE: float,
+    FieldDescriptor.TYPE_FLOAT: float,
+    FieldDescriptor.TYPE_INT32: int,
+    FieldDescriptor.TYPE_INT64: int if six.PY3 else six.integer_types[1],
+    FieldDescriptor.TYPE_UINT32: int,
+    FieldDescriptor.TYPE_UINT64: int if six.PY3 else six.integer_types[1],
+    FieldDescriptor.TYPE_SINT32: int,
+    FieldDescriptor.TYPE_SINT64: int if six.PY3 else six.integer_types[1],
+    FieldDescriptor.TYPE_FIXED32: int,
+    FieldDescriptor.TYPE_FIXED64: int if six.PY3 else six.integer_types[1],
+    FieldDescriptor.TYPE_SFIXED32: int,
+    FieldDescriptor.TYPE_SFIXED64: int if six.PY3 else six.integer_types[1],
+    FieldDescriptor.TYPE_BOOL: bool,
+    FieldDescriptor.TYPE_STRING: six.text_type,
+    FieldDescriptor.TYPE_BYTES: six.binary_type,
+    FieldDescriptor.TYPE_ENUM: int,
+}
+
+
+def repeated(type_callable):
+    return lambda value_list: [type_callable(value) for value in value_list]
+
+
+def enum_label_name(field, value):
+    return field.enum_type.values_by_number[int(value)].name
+
+
+def _is_map_entry(field):
+    return (field.type == FieldDescriptor.TYPE_MESSAGE and
+            field.message_type.has_options and
+            field.message_type.GetOptions().map_entry)
+
+
+def protobuf_to_dict(pb, type_callable_map=TYPE_CALLABLE_MAP,
+                     use_enum_labels=False,
+                     including_default_value_fields=False,
+                     human_readable_timestamps=False):
+    result_dict = {}
+    extensions = {}
+    for field, value in pb.ListFields():
+        if field.message_type and field.message_type.has_options and field.message_type.GetOptions().map_entry:
+            result_dict[field.name] = dict()
+            value_field = field.message_type.fields_by_name['value']
+            type_callable = _get_field_value_adaptor(
+                pb, value_field, type_callable_map,
+                use_enum_labels, including_default_value_fields)
+            for k, v in value.items():
+                result_dict[field.name][k] = type_callable(v)
+            continue
+        type_callable = _get_field_value_adaptor(pb, field, type_callable_map,
+                                                 use_enum_labels,
+                                                 including_default_value_fields,
+                                                 human_readable_timestamps)
+        if field.label == FieldDescriptor.LABEL_REPEATED:
+            type_callable = repeated(type_callable)
+
+        if field.is_extension:
+            extensions[str(field.number)] = type_callable(value)
+            continue
+
+        if field.full_name in ['google.protobuf.Timestamp.seconds'] and human_readable_timestamps:
+            result_dict[field.name] = datetime.fromtimestamp(type_callable(value)).strftime('%Y-%m-%d %H:%M:%S.%f')
+        else:
+            result_dict[field.name] = type_callable(value)
+
+    # Serialize default value if including_default_value_fields is True.
+    if including_default_value_fields:
+        for field in pb.DESCRIPTOR.fields:
+            # Singular message fields and oneof fields will not be affected.
+            if ((
+                    field.label != FieldDescriptor.LABEL_REPEATED and
+                    field.cpp_type == FieldDescriptor.CPPTYPE_MESSAGE) or
+                    field.containing_oneof):
+                continue
+            if field.name in result_dict:
+                # Skip the field which has been serailized already.
+                continue
+            if _is_map_entry(field):
+                result_dict[field.name] = {}
+            else:
+                if use_enum_labels and field.type == FieldDescriptor.TYPE_ENUM:
+                    result_dict[field.name] = enum_label_name(field, field.default_value)
+                else:
+                    result_dict[field.name] = field.default_value
+
+    if extensions:
+        result_dict[EXTENSION_CONTAINER] = extensions
+    return result_dict
+
+
+def _get_field_value_adaptor(pb, field, type_callable_map=TYPE_CALLABLE_MAP,
+                             use_enum_labels=False,
+                             including_default_value_fields=False,
+                             human_readable_timestamps=False):
+    if field.type == FieldDescriptor.TYPE_MESSAGE:
+        # recursively encode protobuf sub-message
+        return lambda pb: protobuf_to_dict(
+            pb, type_callable_map=type_callable_map,
+            use_enum_labels=use_enum_labels,
+            including_default_value_fields=including_default_value_fields,
+            human_readable_timestamps=human_readable_timestamps
+        )
+
+    if use_enum_labels and field.type == FieldDescriptor.TYPE_ENUM:
+        return lambda value: enum_label_name(field, value)
+
+    if field.type in type_callable_map:
+        return type_callable_map[field.type]
+
+    raise TypeError("Field %s.%s has unrecognised type id %d" % (
+        pb.__class__.__name__, field.name, field.type))
+
+
+REVERSE_TYPE_CALLABLE_MAP = {
+}
+
+
+def dict_to_protobuf(pb_klass_or_instance, values, type_callable_map=REVERSE_TYPE_CALLABLE_MAP, strict=True, ignore_none=False):
+    """Populates a protobuf model from a dictionary.
+
+    :param pb_klass_or_instance: a protobuf message class, or an protobuf instance
+    :type pb_klass_or_instance: a type or instance of a subclass of google.protobuf.message.Message
+    :param dict values: a dictionary of values. Repeated and nested values are
+       fully supported.
+    :param dict type_callable_map: a mapping of protobuf types to callables for setting
+       values on the target instance.
+    :param bool strict: complain if keys in the map are not fields on the message.
+    :param bool strict: ignore None-values of fields, treat them as empty field
+    """
+    if isinstance(pb_klass_or_instance, Message):
+        instance = pb_klass_or_instance
+    else:
+        instance = pb_klass_or_instance()
+    return _dict_to_protobuf(instance, values, type_callable_map, strict, ignore_none)
+
+
+def _get_field_mapping(pb, dict_value, strict):
+    field_mapping = []
+    for key, value in dict_value.items():
+        if key == EXTENSION_CONTAINER:
+            continue
+        if key not in pb.DESCRIPTOR.fields_by_name:
+            if strict:
+                raise KeyError("%s does not have a field called %s" % (pb, key))
+            continue
+        field_mapping.append((pb.DESCRIPTOR.fields_by_name[key], value, getattr(pb, key, None)))
+
+    for ext_num, ext_val in dict_value.get(EXTENSION_CONTAINER, {}).items():
+        try:
+            ext_num = int(ext_num)
+        except ValueError:
+            raise ValueError("Extension keys must be integers.")
+        if ext_num not in pb._extensions_by_number:
+            if strict:
+                raise KeyError("%s does not have a extension with number %s. Perhaps you forgot to import it?" % (pb, key))
+            continue
+        ext_field = pb._extensions_by_number[ext_num]
+        pb_val = None
+        pb_val = pb.Extensions[ext_field]
+        field_mapping.append((ext_field, ext_val, pb_val))
+
+    return field_mapping
+
+
+def _dict_to_protobuf(pb, value, type_callable_map, strict, ignore_none):
+    fields = _get_field_mapping(pb, value, strict)
+
+    for field, input_value, pb_value in fields:
+        if ignore_none and input_value is None:
+            continue
+        if field.label == FieldDescriptor.LABEL_REPEATED:
+            if field.message_type and field.message_type.has_options and field.message_type.GetOptions().map_entry:
+                value_field = field.message_type.fields_by_name['value']
+                for key, value in input_value.items():
+                    if value_field.cpp_type == FieldDescriptor.CPPTYPE_MESSAGE:
+                        _dict_to_protobuf(getattr(pb, field.name)[key], value, type_callable_map, strict, ignore_none)
+                    else:
+                        getattr(pb, field.name)[key] = value
+                continue
+            for item in input_value:
+                if field.type == FieldDescriptor.TYPE_MESSAGE:
+                    m = pb_value.add()
+                    _dict_to_protobuf(m, item, type_callable_map, strict, ignore_none)
+                elif field.type == FieldDescriptor.TYPE_ENUM and isinstance(item, six.string_types):
+                    pb_value.append(_string_to_enum(field, item))
+                else:
+                    pb_value.append(item)
+            continue
+        if field.type == FieldDescriptor.TYPE_MESSAGE:
+            _dict_to_protobuf(pb_value, input_value, type_callable_map, strict, ignore_none)
+            continue
+
+        if field.type in type_callable_map:
+            input_value = type_callable_map[field.type](input_value)
+
+        if field.is_extension:
+            pb.Extensions[field] = input_value
+            continue
+
+        if field.type == FieldDescriptor.TYPE_ENUM and isinstance(input_value, six.string_types):
+            input_value = _string_to_enum(field, input_value)
+
+        setattr(pb, field.name, input_value)
+
+    return pb
+
+
+def _string_to_enum(field, input_value):
+    enum_dict = field.enum_type.values_by_name
+    try:
+        input_value = enum_dict[input_value].number
+    except KeyError:
+        raise KeyError("`%s` is not a valid value for field `%s`" % (input_value, field.name))
+    return input_value
diff --git a/grpc_robot/tools/protop.py b/grpc_robot/tools/protop.py
new file mode 100644
index 0000000..7e53a1d
--- /dev/null
+++ b/grpc_robot/tools/protop.py
@@ -0,0 +1,203 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+import os
+import re
+import glob
+import json
+import argparse
+
+try:
+    from . import protobuf_parse as parser
+except ImportError:
+    import protobuf_parse as parser
+
+__version__ = '1.0'
+
+USAGE = """ProtoBuf -- Parser of Protocol Buffer to create the input JSON file for the library
+
+Usage:  grpc_robot.protop [options] target_version
+
+ProtoBuf parser can be used to parse ProtoBuf files (*.proto) into a json formatted input file 
+for the grpc_robot library to be used for keyword documentation.
+
+"""
+
+EPILOG = """
+Example
+=======
+# Executing `grpc_robot.protop` module using Python.
+$ grpc_robot.protop -i /home/user/Workspace/grpc/proto/dmi 0.9.1
+"""
+
+
+class ProtoBufParser(object):
+
+    def __init__(self, target, target_version, input_dir, output_dir=None):
+
+        super().__init__()
+
+        self.target = target
+        self.target_version = target_version.replace('.', '_')
+        self.input_dir = input_dir
+        self.output_dir = output_dir
+
+    @staticmethod
+    def read_enum(enum, protobuf_dict, module):
+        enum_dict = {'name': enum.name, 'type': 'enum', 'module': module, 'values': {ef.value: ef.name for ef in enum.body}}
+        protobuf_dict['data_types'].append(enum_dict)
+
+    def read_message(self, message, protobuf_dict, module):
+        message_dict = {'name': message.name, 'type': 'message', 'module': module, 'fields': []}
+
+        for f in message.body:
+
+            if f is None:
+                continue
+
+            if isinstance(f, parser.Enum):
+                self.read_enum(f, protobuf_dict, module)
+                continue
+
+            elif isinstance(f, parser.Message):
+                self.read_message(f, protobuf_dict, module)
+                continue
+
+            field_dict = {'name': f.name, 'is_choice': isinstance(f, parser.OneOf)}
+
+            if isinstance(f, parser.Field):
+                field_dict['repeated'] = f.repeated
+
+                try:
+                    field_dict['type'] = f.type._value_
+                    field_dict['lookup'] = False
+                except AttributeError:
+                    field_dict['type'] = f.type
+                    field_dict['lookup'] = True
+
+            elif isinstance(f, parser.OneOf):
+                field_dict['cases'] = []
+                for c in f.fields:
+                    case_dict = {'name': c.name}
+                    try:
+                        case_dict['type'] = c.type._value_
+                        case_dict['lookup'] = False
+                    except AttributeError:
+                        case_dict['type'] = c.type
+                        case_dict['lookup'] = True
+                    field_dict['cases'].append(case_dict)
+
+            message_dict['fields'].append(field_dict)
+
+        protobuf_dict['data_types'].append(message_dict)
+
+    def parse_files(self):
+
+        protobuf_dict = {
+            'modules': [],
+            'data_types': [],
+            'services': []
+        }
+
+        for file_name in glob.glob(os.path.join(self.input_dir, '*.proto')):
+            print(file_name)
+
+            module = os.path.splitext(os.path.basename(file_name))[0]
+            module_dict = {'name': module, 'imports': []}
+
+            # the protobuf parser can not handle comments "// ...", so remove them first from the file
+            file_content = re.sub(r'\/\/.*', '', open(file_name).read())
+            parsed = parser.proto.parse(file_content)
+
+            # print(parsed.statements)
+
+            for p in parsed.statements:
+                # print(p)
+
+                if isinstance(p, parser.Import):
+                    module_dict['imports'].append(os.path.splitext(os.path.basename(p.identifier))[0])
+
+                elif isinstance(p, parser.Enum):
+                    self.read_enum(p, protobuf_dict, module)
+
+                elif isinstance(p, parser.Message):
+                    self.read_message(p, protobuf_dict, module)
+
+                elif isinstance(p, parser.Service):
+                    service_dict = {'name': p.name, 'module': module, 'rpcs': []}
+
+                    for field in p.body:
+
+                        if isinstance(field, parser.Enum):
+                            self.read_enum(field, protobuf_dict, module)
+
+                        elif isinstance(field, parser.Message):
+                            self.read_message(field, protobuf_dict, module)
+
+                        elif isinstance(field, parser.Rpc):
+                            rpc_dict = {'name': field.name, 'request': {}, 'response': {}}
+
+                            for attr in ['request', 'response']:
+                                try:
+                                    rpc_dict[attr]['is_stream'] = field.__getattribute__('%s_stream' % attr)
+
+                                    try:
+                                        rpc_dict[attr]['type'] = field.__getattribute__('%s_message_type' % attr)._value_
+                                        rpc_dict[attr]['lookup'] = False
+                                    except AttributeError:
+                                        rpc_dict[attr]['type'] = field.__getattribute__('%s_message_type' % attr)
+                                        rpc_dict[attr]['lookup'] = not rpc_dict[attr]['type'].lower().startswith('google.protobuf.')
+
+                                except AttributeError:
+                                    rpc_dict[attr] = None
+
+                            service_dict['rpcs'].append(rpc_dict)
+
+                    protobuf_dict['services'].append(service_dict)
+
+            protobuf_dict['modules'].append(module_dict)
+
+        if self.output_dir is not None:
+            json_file_name = os.path.join(self.output_dir, self.target, '%s_%s' % (self.target, self.target_version), '%s.json' % self.target)
+            json.dump(protobuf_dict, open(json_file_name, 'w'))
+
+        return protobuf_dict
+
+
+base_dir = os.path.dirname(os.path.realpath(__file__))
+output_base_dir = os.path.join(os.path.split(base_dir)[:-1][0], 'services')
+
+
+def main():
+    # create commandline parser
+    arg_parse = argparse.ArgumentParser(description=USAGE, epilog=EPILOG, formatter_class=argparse.RawTextHelpFormatter)
+
+    # add parser options
+    arg_parse.add_argument('target', choices=['dmi', 'voltha'],
+                           help="Target type of which the ProtocolBuffer files shall be converted to the JSON file.")
+    arg_parse.add_argument('target_version', help="Version number of the ProtocolBuffer files.")
+
+    arg_parse.add_argument('-i', '--inputdir', default=os.getcwd(), help="Path to the location of the ProtocolBuffer files.")
+    arg_parse.add_argument('-o', '--outputdir', default=os.getcwd(), help="Path to the location JSON file to be stored.")
+
+    arg_parse.add_argument('-v', '--version', action='version', version=__version__)
+    arg_parse.set_defaults(feature=False)
+
+    # parse commandline
+    args = arg_parse.parse_args()
+
+    ProtoBufParser(args.target, args.target_version, args.inputdir or os.getcwd(), args.outputdir or output_base_dir).parse_files()
+
+
+if __name__ == '__main__':
+    main()
diff --git a/grpc_robot/tools/robot_tools.py b/grpc_robot/tools/robot_tools.py
new file mode 100644
index 0000000..f5b7b0c
--- /dev/null
+++ b/grpc_robot/tools/robot_tools.py
@@ -0,0 +1,116 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from grpc_robot.grpc_robot import _package_version_get
+
+
+class Collections(object):
+    """
+    Tools for collections (list, dict) related functionality.
+    """
+
+    try:
+        ROBOT_LIBRARY_VERSION = _package_version_get('grpc_robot')
+    except NameError:
+        ROBOT_LIBRARY_VERSION = 'unknown'
+
+    @staticmethod
+    def dict_get_key_by_value(input_dict, search_value):
+        """
+        Gets the first key from _input_dict_ which has the value of _search_value_.
+
+        If _search_value_ is not found in _input_dict_, an empty string is returned.
+
+        *Parameters*:
+        - _input_dict_: <dictionary> to be browsed.
+        - _search_value_: <string>, value to be searched for.
+
+        *Return*: key of dictionary if search value is in input_dict else empty string
+        """
+        return_key = ''
+        for key, val in input_dict.items():
+            if val == search_value:
+                return_key = key
+                break
+
+        return return_key
+
+    @staticmethod
+    def dict_get_value(values_dict, key, strict=False):
+        """
+        Returns the value for given _key_ in _values_dict_.
+
+        If _strict_ is set to False (default) it will return given _key_ if its is not in the dictionary.
+        If set to True, an AssertionError is raised.
+
+        *Parameters*:
+        - _key_: <string>, key to be searched in dictionary.
+        - _values_dict_: <dictionary> in which the key is searched.
+        - _strict_: Optional: <boolean> switch to indicate if an exception shall be raised if key is not in values_dict.
+                Default: False
+
+        *Return*:
+        - if key is in values_dict: Value from _values_dict_ for _key_.
+        - else: _key_.
+        - raises AssertionError in case _key_ is not in _values_dict_ and _strict_ is True.
+        """
+        try:
+            return_value = values_dict[key]
+        except KeyError:
+            if strict:
+                raise AssertionError('Error: Value not found for key: %s' % key)
+            else:
+                return_value = key
+
+        return return_value
+
+    @staticmethod
+    def list_get_dict_by_value(input_list, key_name, value, match='first'):
+        """
+        Retrieves a dictionary from a list of dictionaries where _key_name_ has the _value, if _match_ is
+        "first". Else it returns all matching dictionaries.
+
+        *Parameters*:
+        - _input_list_: <list> ; List of dictionaries.
+        - _key_name_: <dictionary> or <list> ; Name of the key to be searched for.
+        - _value_: <string> or <number> ; Any value of key _key_name_ to be searched for.
+
+        *Example*:
+        | ${dict1}    | Create Dictionary      | key_key=master1 | key1=value11 | key2=value12 |          |
+        | ${dict2}    | Create Dictionary      | key_key=master2 | key1=value21 | key2=value22 |          |
+        | ${dict3}    | Create Dictionary      | key_key=master3 | key1=value31 | key2=value32 |          |
+        | ${dict4}    | Create Dictionary      | key_key=master4 | key5=value41 | key6=value42 |          |
+        | ${the_list} | Create List            | ${dict1}        | ${dict2}     | ${dict3}     | ${dict4} |
+        | ${result}   | List Get Dict By Value | ${the_list}     | key_key      | master4      |          |
+
+        Variable ${result} has following structure:
+        | ${result} = {
+        |   'key_key': 'master4',
+        |   'key5': 'value41',
+        |   'key6': 'value42'
+        | }
+        """
+        try:
+            if match == 'first':
+                return input_list[next(index for (index, d) in enumerate(input_list) if d[key_name] == value)]
+            else:
+                return [d for d in input_list if d[key_name] == value]
+        except (KeyError, TypeError, StopIteration):
+            raise KeyError('list does not contain a dictionary with key:value "%s:%s"' % (key_name, value))
+
+    @staticmethod
+    def to_camel_case(snake_str, first_uppercase=False):
+        components = snake_str.split('_')
+        # We capitalize the first letter of each component except the first one
+        # with the 'title' method and join them together.
+        return (components[0] if not first_uppercase else components[0].title()) + ''.join(x.title() for x in components[1:])
diff --git a/grpc_robot/tools/voltha_tools.py b/grpc_robot/tools/voltha_tools.py
new file mode 100644
index 0000000..ac18c5a
--- /dev/null
+++ b/grpc_robot/tools/voltha_tools.py
@@ -0,0 +1,122 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from grpc_robot.grpc_robot import _package_version_get
+
+from voltha_protos import events_pb2
+from voltha_protos import tech_profile_pb2
+from grpc_robot.tools.protobuf_to_dict import protobuf_to_dict
+
+
+class VolthaTools(object):
+    """
+    Tools for the voltha, e.g decoding / conversions.
+    """
+
+    try:
+        ROBOT_LIBRARY_VERSION = _package_version_get('grpc_robot')
+    except NameError:
+        ROBOT_LIBRARY_VERSION = 'unknown'
+
+    @staticmethod
+    def _convert_string_to_bytes(string):
+        """Converts a string to a bytes object."""
+        try:
+            return bytes.fromhex(string.replace('\\x', ' '))
+        except:
+            try:
+                b = bytearray()
+                b.extend(map(ord, string))
+                return bytes(b)
+            except (TypeError, AttributeError, SystemError):
+                return string
+
+    def events_decode_event(self, bytestring, return_enum_integer='false', return_defaults='false', human_readable_timestamps='true'):
+        """
+        Converts bytes to an Event as defined in _message Event_ from events.proto
+
+        *Parameters*:
+        - bytestring: <bytes>; Byte string, e.g. as it comes from Kafka messages.
+        - return_enum_integer: <string> or <bool>; Whether or not to return the enum values as integer values rather than their labels. Default: _false_.
+        - return_defaults: <string> or <bool>; Whether or not to return the default values. Default: _false_.
+        - human_readable_timestamps: <string> or <bool>; Whether or not to convert the timestamps to human-readable format. Default: _true_.
+
+        *Return*: A dictionary with _event_ structure.
+
+        *Example*:
+        | Import Library | grpc_robot.VolthaTools | WITH NAME | voltha_tools |
+        | ${kafka_records} | kafka.Records Get |
+        | FOR | ${kafka_record} | IN | @{kafka_records} |
+        |  | ${event} | voltha_tools.Events Decode Event | ${kafka_record}[message] |
+        |  | Log | ${event} |
+        | END |
+        """
+        return_enum_integer = str(return_enum_integer).lower() == 'true'
+        result = events_pb2.Event.FromString(self._convert_string_to_bytes(bytestring))
+        return protobuf_to_dict(result,
+                                use_enum_labels=not return_enum_integer,
+                                including_default_value_fields=str(return_defaults).lower() == 'true',
+                                human_readable_timestamps=str(human_readable_timestamps).lower() == 'true')
+
+    def tech_profile_decode_resource_instance(self, bytestring, return_enum_integer='false', return_defaults='false', human_readable_timestamps='true'):
+        """
+        Converts bytes to an resource instance as defined in _message ResourceInstance_ from tech_profile.proto
+
+        *Parameters*:
+        - bytestring: <bytes>; Byte string, e.g. as it comes from Kafka messages.
+        - return_enum_integer: <string> or <bool>; Whether or not to return the enum values as integer values rather than their labels. Default: _false_.
+        - return_defaults: <string> or <bool>; Whether or not to return the default values. Default: _false_.
+        - human_readable_timestamps: <string> or <bool>; Whether or not to convert the timestamps to human-readable format. Default: _true_.
+
+        *Return*: A dictionary with _event_ structure.
+
+        *Example*:
+        | Import Library | grpc_robot.VolthaTools | WITH NAME | voltha_tools |
+        | ${kafka_records} | kafka.Records Get |
+        | FOR | ${kafka_record} | IN | @{kafka_records} |
+        |  | ${event} | voltha_tools. Tech Profile Decode Resource Instance | ${kafka_record}[message] |
+        |  | Log | ${event} |
+        | END |
+        """
+        return_enum_integer = str(return_enum_integer).lower() == 'true'
+        result = tech_profile_pb2.ResourceInstance.FromString(self._convert_string_to_bytes(bytestring))
+        return protobuf_to_dict(result,
+                                use_enum_labels=not return_enum_integer,
+                                including_default_value_fields=str(return_defaults).lower() == 'true',
+                                human_readable_timestamps=str(human_readable_timestamps).lower() == 'true')
+
+
+if __name__ == '__main__':
+    messages = [
+        b'\nD\n#Voltha.openolt..1626255789301080436\x10\x02 \x02*\x030.12\x06\x08\xad\xe3\xba\x87\x06:\x0c\x08\xad\xe3\xba\x87\x06\x10\xd9\xc9\xc8\x8f\x01"\xc2\x02\x11\x00\x00@k\xac;\xd8A\x1a\xb6\x02\n\x93\x01\n\x08PONStats\x11\x00\x00@k\xac;\xd8A*$65950aaf-b40f-4697-b5c3-8deb50fedd5d2-\n\x05oltid\x12$65950aaf-b40f-4697-b5c3-8deb50fedd5d2\x15\n\ndevicetype\x12\x07openolt2\x12\n\tportlabel\x12\x05pon-0\x12\x10\n\tTxPackets\x15\x00\x00\x8bC\x12\x15\n\x0eTxMcastPackets\x15\x00\x00\xa6B\x12\x15\n\x0eTxBcastPackets\x15\x00\x00\xa6B\x12\x0e\n\x07RxBytes\x15\x00\x00\x8bF\x12\x10\n\tRxPackets\x15\x00\x00\x8bC\x12\x15\n\x0eRxMcastPackets\x15\x00\x00\xa6B\x12\x15\n\x0eRxBcastPackets\x15\x00\x00\xa6B\x12\x0e\n\x07TxBytes\x15\x00\x00\x8bF',
+        b'\nD\n#Voltha.openolt..1613491472935896440\x10\x02 \x02*\x030.12\x06\x08\xad\xe3\xba\x87\x06:\x0c\x08\xad\xe3\xba\x87\x06\x10\xd9\xc9\xc8\x8f\x01"\xc2\x02\x11\x00\x00@k\xac;\xd8A\x1a\xb6\x02\n\x93\x01\n\x08PONStats\x11\x00\x00@k\xac;\xd8A*$65950aaf-b40f-4697-b5c3-8deb50fedd5d2-\n\x05oltid\x12$65950aaf-b40f-4697-b5c3-8deb50fedd5d2\x15\n\ndevicetype\x12\x07openolt2\x12\n\tportlabel\x12\x05pon-0\x12\x10\n\tTxPackets\x15\x00\x00\x8bC\x12\x15\n\x0eTxMcastPackets\x15\x00\x00\xa6B\x12\x15\n\x0eTxBcastPackets\x15\x00\x00\xa6B\x12\x0e\n\x07RxBytes\x15\x00\x00\x8bF\x12\x10\n\tRxPackets\x15\x00\x00\x8bC\x12\x15\n\x0eRxMcastPackets\x15\x00\x00\xa6B\x12\x15\n\x0eRxBcastPackets\x15\x00\x00\xa6B\x12\x0e\n\x07TxBytes\x15\x00\x00\x8bF'
+    ]
+    for message in messages:
+        print(VolthaTools().events_decode_event(message))
+
+    messages = [
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x39\x35\x36\x31\x37\x31\x32\x62\x2d\x35\x33\x32\x33\x2d\x34\x64\x64\x63\x2d\x38\x36\x62\x34\x2d\x64\x35\x31\x62\x62\x34\x61\x65\x30\x37\x33\x39\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x35\x66\x35\x39\x61\x32\x32\x63\x2d\x37\x63\x37\x65\x2d\x34\x65\x30\x63\x2d\x39\x38\x30\x65\x2d\x37\x34\x66\x31\x35\x33\x62\x33\x32\x33\x38\x31\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x35\x66\x35\x39\x61\x32\x32\x63\x2d\x37\x63\x37\x65\x2d\x34\x65\x30\x63\x2d\x39\x38\x30\x65\x2d\x37\x34\x66\x31\x35\x33\x62\x33\x32\x33\x38\x31\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x35\x66\x35\x39\x61\x32\x32\x63\x2d\x37\x63\x37\x65\x2d\x34\x65\x30\x63\x2d\x39\x38\x30\x65\x2d\x37\x34\x66\x31\x35\x33\x62\x33\x32\x33\x38\x31\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x35\x66\x35\x39\x61\x32\x32\x63\x2d\x37\x63\x37\x65\x2d\x34\x65\x30\x63\x2d\x39\x38\x30\x65\x2d\x37\x34\x66\x31\x35\x33\x62\x33\x32\x33\x38\x31\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x38\x34\x62\x35\x64\x35\x61\x39\x2d\x33\x34\x64\x66\x2d\x34\x61\x33\x37\x2d\x62\x66\x37\x64\x2d\x63\x37\x37\x61\x34\x65\x33\x34\x33\x61\x37\x64\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x38\x34\x62\x35\x64\x35\x61\x39\x2d\x33\x34\x64\x66\x2d\x34\x61\x33\x37\x2d\x62\x66\x37\x64\x2d\x63\x37\x37\x61\x34\x65\x33\x34\x33\x61\x37\x64\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x38\x34\x62\x35\x64\x35\x61\x39\x2d\x33\x34\x64\x66\x2d\x34\x61\x33\x37\x2d\x62\x66\x37\x64\x2d\x63\x37\x37\x61\x34\x65\x33\x34\x33\x61\x37\x64\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x38\x34\x62\x35\x64\x35\x61\x39\x2d\x33\x34\x64\x66\x2d\x34\x61\x33\x37\x2d\x62\x66\x37\x64\x2d\x63\x37\x37\x61\x34\x65\x33\x34\x33\x61\x37\x64\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x61\x61\x34\x36\x63\x62\x63\x61\x2d\x39\x31\x64\x37\x2d\x34\x36\x64\x65\x2d\x61\x61\x30\x65\x2d\x61\x32\x65\x33\x64\x32\x36\x61\x61\x66\x36\x32\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        "\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x61\x61\x34\x36\x63\x62\x63\x61\x2d\x39\x31\x64\x37\x2d\x34\x36\x64\x65\x2d\x61\x61\x30\x65\x2d\x61\x32\x65\x33\x64\x32\x36\x61\x61\x66\x36\x32\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        "\\x08\\x40\\x12\\x07\\x58\\x47\\x53\\x2d\\x50\\x4f\\x4e\\x1a\\x42\\x6f\\x6c\\x74\\x2d\\x7b\\x61\\x61\\x34\\x36\\x63\\x62\\x63\\x61\\x2d\\x39\\x31\\x64\\x37\\x2d\\x34\\x36\\x64\\x65\\x2d\\x61\\x61\\x30\\x65\\x2d\\x61\\x32\\x65\\x33\\x64\\x32\\x36\\x61\\x61\\x66\\x36\\x32\\x7d\\x2f\\x70\\x6f\\x6e\\x2d\\x7b\\x30\\x7d\\x2f\\x6f\\x6e\\x75\\x2d\\x7b\\x31\\x7d\\x2f\\x75\\x6e\\x69\\x2d\\x7b\\x30\\x7d\\x20\\x80\\x08\\x2a\\x10\\x80\\x08\\x81\\x08\\x82\\x08\\x83\\x08\\x84\\x08\\x85\\x08\\x86\\x08\\x87\\x08"
+    ]
+    # for message in messages:
+    #     print(VolthaTools().tech_profile_decode_resource_instance(message))
diff --git a/grpc_robot/voltha_robot.py b/grpc_robot/voltha_robot.py
new file mode 100644
index 0000000..80bce7b
--- /dev/null
+++ b/grpc_robot/voltha_robot.py
@@ -0,0 +1,44 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+import voltha_protos
+
+from robot.api.deco import keyword
+from grpc_robot.grpc_robot import GrpcRobot
+
+
+class GrpcVolthaRobot(GrpcRobot):
+    """
+    This library is intended to supported different Protocol Buffer definitions. Precondition is that python files
+    generated from Protocol Buffer files are available in a pip package which must be installed before the library
+    is used.
+
+    | Supported device  | Pip package   | Pip package version | Library Name      |
+    | voltha            | voltha-protos | 4.0.13              | grpc_robot.Voltha |
+    """
+
+    device = 'voltha'
+    package_name = 'voltha-protos'
+    installed_package = voltha_protos
+
+    def __init__(self, **kwargs):
+        super().__init__(**kwargs)
+
+    @keyword
+    def voltha_version_get(self):
+        """
+        Retrieve the version of the currently used python module _voltha-protos_.
+
+        *Return*: version string consisting of three dot-separated numbers (x.y.z)
+        """
+        return self.pb_version
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..a8a7478
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,9 @@
+six
+robotframework==3.1.2
+robotframework-lint==1.0
+grpcio
+decorator
+attrs
+parsy
+device-management-interface>=0.9.1
+voltha-protos>=4.0.13
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..5134678
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,65 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+import os
+from setuptools import setup, find_packages
+
+NAME = 'grpc_robot'
+with open('VERSION') as ff:
+    VERSION = ff.read().strip()
+with open('VERSION') as ff:
+    README = ff.read()
+with open('VERSION') as ff:
+    LICENSE = ff.read()
+
+
+def package_data():
+    paths = []
+    for (path, directories, filenames) in os.walk(NAME):
+        for filename in filenames:
+            if os.path.splitext(filename)[-1] == '.json':
+                paths.append(os.path.join('..', path, filename))
+    return paths
+
+
+setup(
+    name=NAME,
+    version=VERSION,
+    description='Package for sending/recieving messages to/from a gRPC server.',
+    long_description=README,
+    long_description_content_type="text/markdown",
+    license=LICENSE,
+    classifiers=[
+        "Programming Language :: Python :: 3",
+        "Operating System :: OS Independent",
+    ],
+    install_requires=[
+        'six',
+        'robotframework>=3.1.2',
+        'grpcio',
+        'decorator',
+        'attrs',
+        'parsy',
+        'device-management-interface>=0.9.1',
+        'voltha-protos>=4.0.13'
+    ],
+    python_requires='>=3.6',
+    packages=find_packages(exclude='tests'),
+    package_data={
+        NAME: package_data(),
+    },
+    data_files=[("", ["LICENSE"])],
+    entry_points={
+        'console_scripts': ['grpc_robot.protop = grpc_robot.tools.protop:main'],
+    }
+)
diff --git a/tests/servers/dmi/dmi_server.py b/tests/servers/dmi/dmi_server.py
new file mode 100644
index 0000000..31e0f55
--- /dev/null
+++ b/tests/servers/dmi/dmi_server.py
@@ -0,0 +1,148 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+from concurrent import futures
+import grpc
+
+import dmi.hw_events_mgmt_service_pb2
+import dmi.hw_events_mgmt_service_pb2_grpc
+import dmi.hw_management_service_pb2
+import dmi.hw_management_service_pb2_grpc
+import dmi.hw_metrics_mgmt_service_pb2
+import dmi.hw_metrics_mgmt_service_pb2_grpc
+import dmi.sw_management_service_pb2
+import dmi.sw_management_service_pb2_grpc
+import dmi.commons_pb2
+import dmi.sw_image_pb2
+
+
+class DmiEventsManagementServiceServicer(dmi.hw_events_mgmt_service_pb2_grpc.NativeEventsManagementServiceServicer):
+
+    def ListEvents(self, request, context):
+        return dmi.hw_events_mgmt_service_pb2.ListEventsResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def UpdateEventsConfiguration(self, request, context):
+        return dmi.hw_events_mgmt_service_pb2.EventsConfigurationResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def StreamEvents(self, request, context):
+        for _ in range(0, 1):
+            yield dmi.hw_events_mgmt_service_pb2.Event(event_id=dmi.hw_events_mgmt_service_pb2.EVENT_NAME_UNDEFINED)
+
+
+class DmiHwManagementServiceServicer(dmi.hw_management_service_pb2_grpc.NativeHWManagementServiceServicer):
+
+    def StartManagingDevice(self, request, context):
+        for _ in range(0, 1):
+            yield dmi.hw_management_service_pb2.StartManagingDeviceResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def StopManagingDevice(self, request, context):
+        return dmi.hw_management_service_pb2.StopManagingDeviceResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def GetManagedDevices(self, request, context):
+        return dmi.hw_management_service_pb2.ManagedDevicesResponse()
+
+    def GetPhysicalInventory(self, request, context):
+        for _ in range(0, 1):
+            yield dmi.hw_management_service_pb2.PhysicalInventoryResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def GetHWComponentInfo(self, request, context):
+        for _ in range(0, 1):
+            yield dmi.hw_management_service_pb2.HWComponentInfoGetResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def SetHWComponentInfo(self, request, context):
+        return dmi.hw_management_service_pb2.HWComponentInfoSetResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def SetLoggingEndpoint(self, request, context):
+        return dmi.hw_management_service_pb2.SetRemoteEndpointResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def GetLoggingEndpoint(self, request, context):
+        return dmi.hw_management_service_pb2.GetLoggingEndpointResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def SetMsgBusEndpoint(self, request, context):
+        return dmi.hw_management_service_pb2.SetRemoteEndpointResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def GetMsgBusEndpoint(self, request, context):
+        return dmi.hw_management_service_pb2.GetMsgBusEndpointResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def GetLoggableEntities(self, request, context):
+        return dmi.hw_management_service_pb2.GetLogLevelResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def SetLogLevel(self, request, context):
+        return dmi.hw_management_service_pb2.SetLogLevelResponse()
+
+    def GetLogLevel(self, request, context):
+        return dmi.hw_management_service_pb2.GetLogLevelResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def HeartbeatCheck(self, request, context):
+        return dmi.hw_management_service_pb2.Heartbeat(heartbeat_signature=0)
+
+    def RebootDevice(self, request, context):
+        return dmi.hw_management_service_pb2.RebootDeviceResponse(status=dmi.commons_pb2.OK_STATUS)
+
+
+class DmiMetricsManagementServiceServicer(dmi.hw_metrics_mgmt_service_pb2_grpc.NativeMetricsManagementServiceServicer):
+
+    def ListMetrics(self, request, context):
+        return dmi.hw_metrics_mgmt_service_pb2.ListMetricsResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def UpdateMetricsConfiguration(self, request, context):
+        return dmi.hw_metrics_mgmt_service_pb2.MetricsConfigurationResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def GetMetric(self, request, context):
+        return dmi.hw_metrics_mgmt_service_pb2.GetMetricResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def StreamMetrics(self, request, context):
+        for _ in range(0, 1):
+            yield dmi.hw_metrics_mgmt_service_pb2.Metric(metric_id=dmi.hw_metrics_mgmt_service_pb2.METRIC_NAME_UNDEFINED)
+
+
+class DmiSoftwareManagementServiceServicer(dmi.sw_management_service_pb2_grpc.NativeSoftwareManagementServiceServicer):
+
+    def GetSoftwareVersion(self, request, context):
+        return dmi.sw_management_service_pb2.GetSoftwareVersionInformationResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def DownloadImage(self, request, context):
+        for _ in range(0, 1):
+            yield dmi.sw_image_pb2.ImageStatus(status=dmi.commons_pb2.OK_STATUS)
+
+    def ActivateImage(self, request, context):
+        for _ in range(0, 1):
+            yield dmi.sw_image_pb2.ImageStatus(status=dmi.commons_pb2.OK_STATUS)
+
+    def RevertToStandbyImage(self, request, context):
+        for _ in range(0, 1):
+            yield dmi.sw_image_pb2.ImageStatus(status=dmi.commons_pb2.OK_STATUS)
+
+    def UpdateStartupConfiguration(self, request, context):
+        for _ in range(0, 1):
+            yield dmi.sw_management_service_pb2.ConfigResponse(status=dmi.commons_pb2.OK_STATUS)
+
+    def GetStartupConfigurationInfo(self, request, context):
+        return dmi.sw_management_service_pb2.StartupConfigInfoResponse(status=dmi.commons_pb2.OK_STATUS)
+
+
+def serve():
+    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
+
+    dmi.hw_events_mgmt_service_pb2_grpc.add_NativeEventsManagementServiceServicer_to_server(DmiEventsManagementServiceServicer(), server)
+    dmi.hw_management_service_pb2_grpc.add_NativeHWManagementServiceServicer_to_server(DmiHwManagementServiceServicer(), server)
+    dmi.hw_metrics_mgmt_service_pb2_grpc.add_NativeMetricsManagementServiceServicer_to_server(DmiMetricsManagementServiceServicer(), server)
+    dmi.sw_management_service_pb2_grpc.add_NativeSoftwareManagementServiceServicer_to_server(DmiSoftwareManagementServiceServicer(), server)
+
+    server.add_insecure_port('127.0.01:50051')
+    server.start()
+    server.wait_for_termination()
+
+
+if __name__ == '__main__':
+    serve()
diff --git a/tests/test.robot b/tests/test.robot
new file mode 100644
index 0000000..1e0894c
--- /dev/null
+++ b/tests/test.robot
@@ -0,0 +1,172 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+
+*** Settings ***
+Documentation    Library test suite for the grpc_robot library. To run the test suite, the fake device manager from
+...    _./servers/dmi_ must have been started beforehand with command _python3 dmi_server.py_.
+Library    OperatingSystem    WITH NAME    os
+Library    String
+Library    Collections
+Variables    ./variables.py
+
+*** Test Cases ***
+Library import
+    [Documentation]    Checks if the grpc_robot libraries can be imported.
+    Import Library    grpc_robot.Dmi    WITH NAME    dmi
+    Import Library    grpc_robot.Collections
+    Import Library    grpc_robot.DmiTools    WITH NAME    dtools
+    Import Library    grpc_robot.VolthaTools    WITH NAME    vtools
+
+library_versions
+    [Documentation]    Checks if the library returns the installed library and device-management-interface versions.
+    [Template]    version_check
+    grpc-robot    dmi.Library Version Get
+    device-management-interface    dmi.Dmi Version Get
+
+keywords
+    [Documentation]    Checks if the keyword name exists in the library's keyword list.
+    Keyword Should Exist    dmi.connection_close
+    Keyword Should Exist    dmi.connection_open
+    Keyword Should Exist    dmi.connection_parameters_get
+    Keyword Should Exist    dmi.connection_parameters_set
+    Keyword Should Exist    dmi.hw_event_mgmt_service_list_events
+    Keyword Should Exist    dmi.hw_event_mgmt_service_update_events_configuration
+    Keyword Should Exist    dmi.hw_management_service_get_hw_component_info
+    Keyword Should Exist    dmi.hw_management_service_get_logging_endpoint
+    Keyword Should Exist    dmi.hw_management_service_get_managed_devices
+    Keyword Should Exist    dmi.hw_management_service_get_msg_bus_endpoint
+    Keyword Should Exist    dmi.hw_management_service_get_physical_inventory
+    Keyword Should Exist    dmi.hw_management_service_set_hw_component_info
+    Keyword Should Exist    dmi.hw_management_service_set_logging_endpoint
+    Keyword Should Exist    dmi.hw_management_service_set_msg_bus_endpoint
+    Keyword Should Exist    dmi.hw_management_service_start_managing_device
+    Keyword Should Exist    dmi.hw_management_service_stop_managing_device
+    Keyword Should Exist    dmi.hw_management_service_get_loggable_entities
+    Keyword Should Exist    dmi.hw_management_service_set_log_level
+    Keyword Should Exist    dmi.hw_management_service_get_log_level
+    Keyword Should Exist    dmi.hw_metrics_mgmt_service_get_metric
+    Keyword Should Exist    dmi.hw_metrics_mgmt_service_list_metrics
+    Keyword Should Exist    dmi.hw_metrics_mgmt_service_update_metrics_configuration
+    Keyword Should Exist    dmi.sw_management_service_activate_image
+    Keyword Should Exist    dmi.sw_management_service_download_image
+    Keyword Should Exist    dmi.sw_management_service_revert_to_standby_image
+    Keyword Should Exist    dmi.sw_management_service_get_software_version
+    Keyword Should Exist    dmi.sw_management_service_update_startup_configuration
+    Keyword Should Exist    dmi.sw_management_service_get_startup_configuration_info
+    Keyword Should Exist    dtools.hw_metrics_mgmt_decode_metric
+    Keyword Should Exist    dtools.hw_events_mgmt_decode_event
+    Keyword Should Exist    vtools.events_decode_event
+    Keyword Should Exist    vtools.tech_profile_decode_resource_instance
+
+dmi
+    [Documentation]    Checks the RPC keywords whether or not they handle their input and output correctly and uses the
+    ...    fake device manager for that. The fake device manager returns _OK_STATUS_ for each RPC. The variables
+    ...    _${keywords_to_skip}_ and _${params}_ are defined in the variables file _./variables.py_.
+    [Setup]    dmi.Connection Open    host=127.0.0.1    port=50051
+    ${keywords}    Run Keyword    dmi.Get Keyword Names
+    FOR    ${keyword}    IN    @{keywords}
+        Continue For Loop If    '${keyword}' in ${keywords_to_skip}
+        ${status}    ${params}    Run Keyword And Ignore Error    Get From Dictionary     ${param_dicts}    ${keyword}
+        Run Keyword If    '${status}' == 'FAIL'    Log    no parameters available for keyword '${keyword}'    WARN
+        Continue For Loop If    '${status}' == 'FAIL'
+        Run Keyword If    ${params} == ${NONE}    ${keyword}    ELSE    ${keyword}    ${params}
+    END
+    [Teardown]    dmi.Connection Close
+
+connection_params
+    [Documentation]    Checks the connection parameter settings.
+    ${new_timeout}    Set Variable    100
+    ${settings_before}    dmi.Connection Parameters Get
+    ${settings_while_set}    dmi.Connection Parameters Set    timeout=${new_timeout}
+    ${settings_after}    dmi.Connection Parameters Get
+    Should Be Equal    ${settings_before}    ${settings_while_set}
+    Should Be Equal As Integers     ${settings_after}[timeout]    ${new_timeout}
+
+enum_and_default_values
+    [Documentation]    Checks the optional parameters _return_enum_integer_ and _return_defaults_ of the RPC keywords to
+    ...    control their output. Check keyword documentation for the meaning of the parameters.
+    ...    *Note*: The fake device manager must be running for this test case.
+    [Setup]    dmi.Connection Open    host=127.0.0.1    port=50051
+    ${params}   Get From Dictionary    ${param_dicts}    hw_management_service_get_log_level
+    ${return}   hw_management_service_get_log_level     ${params}
+    Should Be Equal As Strings    ${return}[status]    OK_STATUS
+    Dictionary Should Not Contain Key     ${return}    reason
+    ${return}   hw_management_service_get_log_level     ${params}    return_enum_integer=true
+    Should Be Equal As Integers    ${return}[status]    1
+    Dictionary Should Not Contain Key     ${return}    reason
+    ${return}   hw_management_service_get_log_level     ${params}    return_enum_integer=${TRUE}
+    Should Be Equal As Integers    ${return}[status]    1
+    Dictionary Should Not Contain Key     ${return}    reason
+    ${return}   hw_management_service_get_log_level     ${params}    return_defaults=true
+    Should Be Equal As Strings    ${return}[status]    OK_STATUS
+    Should Be Equal As Strings    ${return}[reason]    UNDEFINED_REASON
+    ${return}   hw_management_service_get_log_level     ${params}    return_defaults=${TRUE}
+    Should Be Equal As Strings    ${return}[status]    OK_STATUS
+    Should Be Equal As Strings    ${return}[reason]    UNDEFINED_REASON
+    ${return}   hw_management_service_get_log_level     ${params}    return_enum_integer=true    return_defaults=true
+    Should Be Equal As Integers    ${return}[status]    1
+    Should Be Equal As Integers    ${return}[reason]    0
+    [Teardown]    dmi.Connection Close
+
+tools
+    [Documentation]    Checks some functions from the tools library which shall support the tester with general functionality.
+    ${dict_1}    Create Dictionary    name=abc    type=123
+    ${dict_2}    Create Dictionary    name=def    type=456
+    ${list}    Create List    ${dict_1}    ${dict_2}
+    ${return_dict}    grpc_robot.Collections.List Get Dict By Value    ${list}    name    def
+    Should Be Equal    ${return_dict}[type]    456
+
+dmi_tools
+    [Documentation]    Checks functions from the DMI tools library with decoding Kafka messages. The variables
+    ...    _kafka_metric_messages_ and _kafka_event_messages_ are defined in the variables file.
+    FOR    ${kafka}    IN    @{kafka_metric_messages}
+        ${metric}    dtools.Hw Metrics Mgmt Decode Metric    ${kafka}[message]
+        Should Be Equal    ${metric}[metric_metadata][device_uuid][uuid]    4c411df2-22e6-58d2-b1bb-545a0263d18d
+        Should Be Equal    ${metric}[metric_id]    ${kafka}[metric]
+    END
+    FOR    ${kafka}    IN    @{kafka_event_messages}
+        ${event}    dtools.Hw Events Mgmt Decode Event    ${kafka}[message]
+        Should Be Equal    ${event}[event_metadata][device_uuid][uuid]    84f46fde-89fa-5a2f-be4a-6d18abe6e953
+        Should Be Equal    ${event}[event_id]    ${kafka}[event]
+    END
+
+voltha_tools
+    [Documentation]    Checks functions from the Voltha tools library with decoding Kafka messages. The variables
+    ...    _kafka_voltha_events_messages_ and _voltha_resource_instances_ are defined in the variables file.
+    FOR    ${kafka}    IN    @{kafka_voltha_events_messages}
+        ${event}    vtools.Events Decode Event    ${kafka}[message]    return_defaults=true
+        Should Be Equal    ${event}[header][id]    Voltha.openolt..1613491472935896440
+        Should Be Equal    ${event}[kpi_event2][type]    slice
+        ${event}    vtools.Events Decode Event    ${kafka}[message]
+        Dictionary Should Not Contain Key    ${event}[kpi_event2]    type
+    END
+    FOR    ${input}    IN    @{voltha_resource_instances}
+        ${instance}    vtools.Tech Profile Decode Resource Instance    ${input}    return_defaults=true
+        Should Be Equal    ${instance}[tp_id]    ${64}
+    END
+
+*** Keywords ***
+version_check
+    [Documentation]    Determines the version of the installed package and compares it with the returned version of the
+    ...    corresponding keyword.
+    [Arguments]    ${package_name}     ${kw_name}
+    ${pip show}    os.Run    python3 -m pip show ${package_name} | grep Version
+    ${pip show}    Split To Lines    ${pip show}
+    FOR    ${line}    IN    @{pip show}
+         ${is_version}    Evaluate    '${line}'.startswith('Version')
+         Continue For Loop If    not ${is_version}
+         ${pip_version}    Evaluate    '${line}'.split(':')[-1].strip()
+    END
+    ${lib_version}    Run Keyword    ${kw_name}
+    Should Be Equal    ${pip_version}    ${lib_version}
diff --git a/tests/variables.py b/tests/variables.py
new file mode 100644
index 0000000..15fd619
--- /dev/null
+++ b/tests/variables.py
@@ -0,0 +1,245 @@
+# Copyright 2020-present Open Networking Foundation
+# Original copyright 2020-present ADTRAN, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+
+keywords_to_skip = [
+    'connection_open',
+    'connection_close',
+    'connection_parameters_get',
+    'connection_parameters_set',
+    'get_keyword_names',
+    'library_version_get',
+    'dmi_version_get'
+]
+
+param_dicts = {
+    'hw_event_mgmt_service_list_events': {'uuid': {'uuid': '1234-3456-5678'}},
+    'hw_event_mgmt_service_update_events_configuration': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_event_mgmt_service_stream_events': None,
+    'hw_management_service_start_managing_device': {'name': 'otti', 'uri': {'uri': '1.2.3.4'}},
+    'hw_management_service_stop_managing_device': {'name': 'otti'},
+    'hw_management_service_get_managed_devices': None,
+    'hw_management_service_get_physical_inventory': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_management_service_get_hw_component_info': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_management_service_set_hw_component_info': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_management_service_set_logging_endpoint': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_management_service_get_logging_endpoint': {'uuid': {'uuid': '1234-3456-5678'}},
+    'hw_management_service_set_msg_bus_endpoint': {'msgbus_endpoint': '1234-3456-5678'},
+    'hw_management_service_get_msg_bus_endpoint': None,
+    'hw_management_service_get_loggable_entities': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_management_service_set_log_level': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_management_service_get_log_level': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_management_service_heartbeat_check': None,
+    'hw_management_service_reboot_device': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_metrics_mgmt_service_list_metrics': {'uuid': {'uuid': '1234-3456-5678'}},
+    'hw_metrics_mgmt_service_update_metrics_configuration': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'hw_metrics_mgmt_service_get_metric': {'meta_data': {'device_uuid': {'uuid': '1234-3456-5678'}}},
+    'hw_metrics_mgmt_service_stream_metrics': None,
+    'sw_management_service_get_software_version': {'uuid': {'uuid': '1234-3456-5678'}},
+    'sw_management_service_download_image': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'sw_management_service_activate_image': {'uuid': {'uuid': '1234-3456-5678'}},
+    'sw_management_service_revert_to_standby_image': {'uuid': {'uuid': '1234-3456-5678'}},
+    'sw_management_service_update_startup_configuration': {'device_uuid': {'uuid': '1234-3456-5678'}},
+    'sw_management_service_get_startup_configuration_info': {'device_uuid': {'uuid': '1234-3456-5678'}},
+}
+
+kafka_metric_messages = [
+    {
+        'message': b"\x08e\x12Y\n&\n$4c411df2-22e6-58d2-b1bb-545a0263d18d\x12&\n$96f716bd-9e72-5c39-9a79-58bb3821df19"
+                   b"\x1a\x07cpu 0/1\x1a9\x08\x07\x10\x01\x18\t(\x012\x07percent:\x06\x08\xde\x96\x84\xfd\x05@\x88'J\x1b"
+                   b"METRIC_CPU_USAGE_PERCENTAGE",
+        'metric': 'METRIC_CPU_USAGE_PERCENTAGE'
+    },
+    {
+        'message': b"\x08\xaf\x02\x12f\n&\n$4c411df2-22e6-58d2-b1bb-545a0263d18d\x12&\n$f14853c0-51e8-5f5a-8983-e8dc9c060f5d"
+                   b"\x1a\x14storage-resource 0/1\x1a:\x08_\x10\x01\x18\t(\x012\x07percent:\x06\x08\xe3\x96\x84\xfd\x05@\x88'"
+                   b"J\x1cMETRIC_DISK_USAGE_PERCENTAGE",
+        'metric': 'METRIC_DISK_USAGE_PERCENTAGE'
+    },
+    {
+        'message': b"\x08\xf6\x03\x12b\n&\n$4c411df2-22e6-58d2-b1bb-545a0263d18d\x12&\n$81ba5a6b-b8b9-582e-9cea-a512ed6bd8ad"
+                   b"\x1a\x10power-supply 0/1\x1a;\x082\x10\x01\x18\t(\x012\x07percent:\x06\x08\xe7\x96\x84\xfd\x05@\x88'J\x1d"
+                   b"METRIC_POWER_USAGE_PERCENTAGE",
+        'metric': 'METRIC_POWER_USAGE_PERCENTAGE'
+    },
+    {
+        'message': b"\x08\xf6\x03\x12b\n&\n$4c411df2-22e6-58d2-b1bb-545a0263d18d\x12&\n$760d33cd-ad0d-541b-8014-272af0cfbff8"
+                   b"\x1a\x10power-supply 0/2\x1a;\x082\x10\x01\x18\t(\x012\x07percent:\x06\x08\xe7\x96\x84\xfd\x05@\x88'J\x1d"
+                   b"METRIC_POWER_USAGE_PERCENTAGE",
+        'metric': 'METRIC_POWER_USAGE_PERCENTAGE'
+    },
+    {
+        'message': b"\x08\x01\x12e\n&\n$4c411df2-22e6-58d2-b1bb-545a0263d18d\x12&\n$0f3a8a29-2b79-560a-a034-2255e0c85920"
+                   b"\x1a\x13pluggable-fan 0/1/1\x1a+\x08\xc0%\x10\n\x18\t(\x012\x03rpm:\x06\x08\xeb\x96\x84\xfd\x05@\x88'J\x10"
+                   b"METRIC_FAN_SPEED",
+        'metric': 'METRIC_FAN_SPEED'
+    },
+    {
+        'message': b"\x08\x01\x12e\n&\n$4c411df2-22e6-58d2-b1bb-545a0263d18d\x12&\n$80d0e158-efc0-59ea-808d-e273d1c46099"
+                   b"\x1a\x13pluggable-fan 0/1/2\x1a+\x08\xe5&\x10\n\x18\t(\x012\x03rpm:\x06\x08\xeb\x96\x84\xfd\x05@\x88'J\x10"
+                   b"METRIC_FAN_SPEED",
+        'metric': 'METRIC_FAN_SPEED'
+    },
+    {
+        'message': b"\x08\x01\x12e\n&\n$4c411df2-22e6-58d2-b1bb-545a0263d18d\x12&\n$15d3103a-36b2-5774-ae06-d2d59a2ab6e7"
+                   b"\x1a\x13pluggable-fan 0/1/3\x1a+\x08\xc8$\x10\n\x18\t(\x012\x03rpm:\x06\x08\xeb\x96\x84\xfd\x05@\x88'J\x10"
+                   b"METRIC_FAN_SPEED",
+        'metric': 'METRIC_FAN_SPEED'
+    },
+    {
+        'message': b"\x08\xd8\x04\x12a\n&\n$4c411df2-22e6-58d2-b1bb-545a0263d18d\x12&\n$dc8c95f1-6b84-5e6d-b645-c76b02b7551b"
+                   b"\x1a\x0ftemperature 0/1\x1aB\x085\x10\x08\x18\t(\x012\x0edegree Celsius:\x06\x08\xf0\x96\x84\xfd\x05@\x88'"
+                   b"J\x1dMETRIC_INNER_SURROUNDING_TEMP",
+        'metric': 'METRIC_INNER_SURROUNDING_TEMP'
+    },
+]
+
+kafka_event_messages = [
+    {
+        'message': b'\na\n&\n$84f46fde-89fa-5a2f-be4a-6d18abe6e953\x12&\n$368c6f41-564c-5821-8e15-721f818387fc\x1a\x0f'
+                    b'temperature 0/1\x10\xf7\x03\x1a\x06\x08\x80\x82\xcd\xfe\x05"\x10\n\x02\x10\x00\x12\n\n\x08\n\x02'
+                    b'\x10A\x12\x02\x10\x01',
+        'event': 'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED'
+    },
+    {
+        'message': b'\na\n&\n$84f46fde-89fa-5a2f-be4a-6d18abe6e953\x12&\n$368c6f41-564c-5821-8e15-721f818387fc\x1a\x0f'
+                    b'temperature 0/1\x10\xf8\x03\x1a\x06\x08\x80\x82\xcd\xfe\x05"\x00',
+        'event': 'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED'
+    },
+    {
+        'message': b'\na\n&\n$84f46fde-89fa-5a2f-be4a-6d18abe6e953\x12&\n$368c6f41-564c-5821-8e15-721f818387fc\x1a\x0f'
+                    b'temperature 0/1\x10\xf5\x03\x1a\x06\x08\xfe\xac\xdd\xfe\x05"\x10\n\x02\x10\x03\x12\n\n\x08\n\x02'
+                    b'\x10\x02\x12\x02\x10\x01*\xcf\x01The system temperature of the physical entity '
+                    b'\'temperature 0/1\' has risen above power reduction active-threshold of 2 degree Celsius. Unit '
+                    b'operates out of specification. Correct service cannot be guaranteed.',
+        'event': 'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL'
+    },
+    {
+        'message': b'\na\n&\n$84f46fde-89fa-5a2f-be4a-6d18abe6e953\x12&\n$368c6f41-564c-5821-8e15-721f818387fc\x1a\x0f'
+                    b'temperature 0/1\x10\xf6\x03\x1a\x06\x08\xfe\xac\xdd\xfe\x05"\x00*\x86\x01The system temperature '
+                    b'of the physical entity \'temperature 0/1\' has risen above thermal shutdown active-threshold '
+                    b'of 2 degree Celsius.',
+        'event': 'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL'
+    },
+    {
+        'message': b'\na\n&\n$84f46fde-89fa-5a2f-be4a-6d18abe6e953\x12&\n$368c6f41-564c-5821-8e15-721f818387fc\x1a\x0f'
+                    b'temperature 0/1\x10\xf7\x03\x1a\x06\x08\xfe\xac\xdd\xfe\x05"\x10\n\x02\x10\x00\x12\n\n\x08\n\x02'
+                    b'\x10\x02\x12\x02\x10\x01',
+        'event': 'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED'
+    },
+    {
+        'message': b'\na\n&\n$84f46fde-89fa-5a2f-be4a-6d18abe6e953\x12&\n$368c6f41-564c-5821-8e15-721f818387fc\x1a\x0f'
+                    b'temperature 0/1\x10\xf5\x03\x1a\x06\x08\xfe\xac\xdd\xfe\x05"\x10\n\x02\x10\x03\x12\n\n\x08\n\x02'
+                    b'\x10\x02\x12\x02\x10\x01*\xcf\x01The system temperature of the physical entity '
+                    b'\'temperature 0/1\' has risen above power reduction active-threshold of 2 degree Celsius. Unit '
+                    b'operates out of specification. Correct service cannot be guaranteed.',
+        'event': 'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL'
+    },
+    {
+        'message': b'\na\n&\n$84f46fde-89fa-5a2f-be4a-6d18abe6e953\x12&\n$368c6f41-564c-5821-8e15-721f818387fc\x1a\x0f'
+                    b'temperature 0/1\x10\xf7\x03\x1a\x06\x08\xfe\xac\xdd\xfe\x05"\x10\n\x02\x10\x00\x12\n\n\x08\n\x02'
+                    b'\x10\x02\x12\x02\x10\x01',
+        'event': 'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED'
+    },
+    {
+        'message': b'\na\n&\n$84f46fde-89fa-5a2f-be4a-6d18abe6e953\x12&\n$368c6f41-564c-5821-8e15-721f818387fc\x1a\x0f'
+                    b'temperature 0/1\x10\xf5\x03\x1a\x06\x08\xfe\xac\xdd\xfe\x05"\x10\n\x02\x10\x03\x12\n\n\x08\n\x02'
+                    b'\x10\x02\x12\x02\x10\x01*\xcf\x01The system temperature of the physical entity '
+                    b'\'temperature 0/1\' has risen above power reduction active-threshold of 2 degree Celsius. Unit '
+                    b'operates out of specification. Correct service cannot be guaranteed.',
+        'event': 'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL'
+    },
+]
+
+kafka_voltha_events_messages = [
+    {
+        'message': b'\nL\n#Voltha.openolt..1613491472935896440\x10\x02\x18\x04 \x02*\x030.12\x0c\x08\x90\xda\xaf\x81\x06\x10\x97\xb2\xa2\xbe\x03:\x0c\x08'
+                   b'\x90\xda\xaf\x81\x06\x10\x86\xd3\xa2\xbe\x03"\xc2\x02\x11@w,\xf2Ed\xb6C\x1a\xb6\x02\n\x93\x01\n\x08NNIStats\x119w,\xf2Ed\xb6C*$a3281'
+                   b'32d-ad87-4edf-976e-ad1a364144012-\n\x05oltid\x12$a328132d-ad87-4edf-976e-ad1a364144012\x15\n\ndevicetype\x12\x07openolt2\x12\n\tport'
+                   b'label\x12\x05nni-0\x12\x15\n\x0eTxMcastPackets\x15\x00\x80\xccD\x12\x15\n\x0eTxBcastPackets\x15\x00\x80\xccD\x12\x0e\n\x07RxBytes\x15'
+                   b'\x00p\xaaH\x12\x10\n\tRxPackets\x15\x00p\xaaE\x12\x15\n\x0eRxMcastPackets\x15\x00\x80\xccD\x12\x15\n\x0eRxBcastPackets\x15\x00\x80\xcc'
+                   b'D\x12\x0e\n\x07TxBytes\x15\x00p\xaaH\x12\x10\n\tTxPackets\x15\x00p\xaaE',
+        'timestamp': -1,
+        'topic': 'voltha.events'
+    },
+    {
+        'message': b'\nJ\n#Voltha.openolt..1613491472935896440\x10\x02 \x02*\x030.12\x0c\x08\x90\xda\xaf\x81\x06\x10\xdf\xba\xa6\xbe\x03:\x0c\x08\x90\xda'
+                   b'\xaf\x81\x06\x10\xb8\xcf\xa6\xbe\x03"\xc2\x02\x11?x,\xf2Ed\xb6C\x1a\xb6\x02\n\x93\x01\n\x08PONStats\x11=x,\xf2Ed\xb6C*$a328132d-ad87'
+                   b'-4edf-976e-ad1a364144012-\n\x05oltid\x12$a328132d-ad87-4edf-976e-ad1a364144012\x15\n\ndevicetype\x12\x07openolt2\x12\n\tportlabel\x12'
+                   b'\x05pon-0\x12\x0e\n\x07TxBytes\x15\x00\xd0\xa6H\x12\x10\n\tTxPackets\x15\x00\xd0\xa6E\x12\x15\n\x0eTxMcastPackets\x15\x00 \xc8D\x12'
+                   b'\x15\n\x0eTxBcastPackets\x15\x00 \xc8D\x12\x0e\n\x07RxBytes\x15\x00\xd0\xa6H\x12\x10\n\tRxPackets\x15\x00\xd0\xa6E\x12\x15\n\x0eRxMc'
+                   b'astPackets\x15\x00 \xc8D\x12\x15\n\x0eRxBcastPackets\x15\x00 \xc8D',
+        'timestamp': -1,
+        'topic': 'voltha.events'
+    },
+    {
+        'message': b'\nJ\n#Voltha.openolt..1613491472935896440\x10\x02 \x02*\x030.12\x0c\x08\xb8\xab\xb8\x81\x06\x10\x80\x8f\xc8\xb4\x02:\x0c\x08\xb8\xab'
+                   b'\xb8\x81\x06\x10\xae\xa1\xc8\xb4\x02"\xc2\x02\x119e\xfc\x9e\xc6d\xb6C\x1a\xb6\x02\n\x93\x01\n\x08PONStats\x118e\xfc\x9e\xc6d\xb6C*$4'
+                   b'fce7729-d898-43af-a12a-d143fea0abea2\x15\n\ndevicetype\x12\x07openolt2\x12\n\tportlabel\x12\x05pon-02-\n\x05oltid\x12$4fce7729-d898-'
+                   b'43af-a12a-d143fea0abea\x12\x10\n\tRxPackets\x15\x00\xc0\x06E\x12\x15\n\x0eRxMcastPackets\x15\x00\x80!D\x12\x15\n\x0eRxBcastPackets'
+                   b'\x15\x00\x80!D\x12\x0e\n\x07TxBytes\x15\x00\xc0\x06H\x12\x10\n\tTxPackets\x15\x00\xc0\x06E\x12\x15\n\x0eTxMcastPackets\x15\x00\x80!D'
+                   b'\x12\x15\n\x0eTxBcastPackets\x15\x00\x80!D\x12\x0e\n\x07RxBytes\x15\x00\xc0\x06H',
+        'timestamp': -1,
+        'topic': 'voltha.events'
+    },
+    {
+        'message': b'\nD\n#Voltha.openolt..1613491472935896440\x10\x02 \x02*\x030.12\x06\x08\xad\xe3\xba\x87\x06:\x0c\x08\xad\xe3\xba\x87\x06\x10\xd9'
+                   b'\xc9\xc8\x8f\x01"\xc2\x02\x11\x00\x00@k\xac;\xd8A\x1a\xb6\x02\n\x93\x01\n\x08PONStats\x11\x00\x00@k\xac;\xd8A*$65950aaf-b40f-4697'
+                   b'-b5c3-8deb50fedd5d2-\n\x05oltid\x12$65950aaf-b40f-4697-b5c3-8deb50fedd5d2\x15\n\ndevicetype\x12\x07openolt2\x12\n\tportlabel\x12'
+                   b'\x05pon-0\x12\x10\n\tTxPackets\x15\x00\x00\x8bC\x12\x15\n\x0eTxMcastPackets\x15\x00\x00\xa6B\x12\x15\n\x0eTxBcastPackets\x15\x00'
+                   b'\x00\xa6B\x12\x0e\n\x07RxBytes\x15\x00\x00\x8bF\x12\x10\n\tRxPackets\x15\x00\x00\x8bC\x12\x15\n\x0eRxMcastPackets\x15\x00\x00\xa6'
+                   b'B\x12\x15\n\x0eRxBcastPackets\x15\x00\x00\xa6B\x12\x0e\n\x07TxBytes\x15\x00\x00\x8bF',
+        'timestamp': -1,
+        'topic': 'voltha.events'
+    }
+]
+
+voltha_resource_instances = [
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x39\x35\x36\x31\x37\x31\x32\x62\x2d\x35\x33\x32\x33\x2d\x34\x64\x64"
+        b"\x63\x2d\x38\x36\x62\x34\x2d\x64\x35\x31\x62\x62\x34\x61\x65\x30\x37\x33\x39\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x35\x66\x35\x39\x61\x32\x32\x63\x2d\x37\x63\x37\x65\x2d\x34\x65\x30"
+        b"\x63\x2d\x39\x38\x30\x65\x2d\x37\x34\x66\x31\x35\x33\x62\x33\x32\x33\x38\x31\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x35\x66\x35\x39\x61\x32\x32\x63\x2d\x37\x63\x37\x65\x2d\x34\x65\x30"
+        b"\x63\x2d\x39\x38\x30\x65\x2d\x37\x34\x66\x31\x35\x33\x62\x33\x32\x33\x38\x31\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x35\x66\x35\x39\x61\x32\x32\x63\x2d\x37\x63\x37\x65\x2d\x34\x65\x30"
+        b"\x63\x2d\x39\x38\x30\x65\x2d\x37\x34\x66\x31\x35\x33\x62\x33\x32\x33\x38\x31\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x35\x66\x35\x39\x61\x32\x32\x63\x2d\x37\x63\x37\x65\x2d\x34\x65\x30"
+        b"\x63\x2d\x39\x38\x30\x65\x2d\x37\x34\x66\x31\x35\x33\x62\x33\x32\x33\x38\x31\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x38\x34\x62\x35\x64\x35\x61\x39\x2d\x33\x34\x64\x66\x2d\x34\x61\x33"
+        b"\x37\x2d\x62\x66\x37\x64\x2d\x63\x37\x37\x61\x34\x65\x33\x34\x33\x61\x37\x64\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x38\x34\x62\x35\x64\x35\x61\x39\x2d\x33\x34\x64\x66\x2d\x34\x61\x33"
+        b"\x37\x2d\x62\x66\x37\x64\x2d\x63\x37\x37\x61\x34\x65\x33\x34\x33\x61\x37\x64\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x38\x34\x62\x35\x64\x35\x61\x39\x2d\x33\x34\x64\x66\x2d\x34\x61\x33"
+        b"\x37\x2d\x62\x66\x37\x64\x2d\x63\x37\x37\x61\x34\x65\x33\x34\x33\x61\x37\x64\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x38\x34\x62\x35\x64\x35\x61\x39\x2d\x33\x34\x64\x66\x2d\x34\x61\x33"
+        b"\x37\x2d\x62\x66\x37\x64\x2d\x63\x37\x37\x61\x34\x65\x33\x34\x33\x61\x37\x64\x7d\x2f\x70\x6f\x6e\x2d\x7b\x31\x7d\x2f\x6f\x6e\x75\x2d\x7b\x32"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x81\x08\x2a\x10\x88\x08\x89\x08\x8a\x08\x8b\x08\x8c\x08\x8d\x08\x8e\x08\x8f\x08",
+        b"\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x61\x61\x34\x36\x63\x62\x63\x61\x2d\x39\x31\x64\x37\x2d\x34\x36\x64"
+        b"\x65\x2d\x61\x61\x30\x65\x2d\x61\x32\x65\x33\x64\x32\x36\x61\x61\x66\x36\x32\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31"
+        b"\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        "\x08\x40\x12\x07\x58\x47\x53\x2d\x50\x4f\x4e\x1a\x42\x6f\x6c\x74\x2d\x7b\x61\x61\x34\x36\x63\x62\x63\x61\x2d\x39\x31\x64\x37\x2d\x34\x36\x64"
+        "\x65\x2d\x61\x61\x30\x65\x2d\x61\x32\x65\x33\x64\x32\x36\x61\x61\x66\x36\x32\x7d\x2f\x70\x6f\x6e\x2d\x7b\x30\x7d\x2f\x6f\x6e\x75\x2d\x7b\x31"
+        "\x7d\x2f\x75\x6e\x69\x2d\x7b\x30\x7d\x20\x80\x08\x2a\x10\x80\x08\x81\x08\x82\x08\x83\x08\x84\x08\x85\x08\x86\x08\x87\x08",
+        "\\x08\\x40\\x12\\x07\\x58\\x47\\x53\\x2d\\x50\\x4f\\x4e\\x1a\\x42\\x6f\\x6c\\x74\\x2d\\x7b\\x61\\x61\\x34\\x36\\x63\\x62\\x63\\x61\\x2d\\x39"
+        "\\x31\\x64\\x37\\x2d\\x34\\x36\\x64\\x65\\x2d\\x61\\x61\\x30\\x65\\x2d\\x61\\x32\\x65\\x33\\x64\\x32\\x36\\x61\\x61\\x66\\x36\\x32\\x7d\\x2f"
+        "\\x70\\x6f\\x6e\\x2d\\x7b\\x30\\x7d\\x2f\\x6f\\x6e\\x75\\x2d\\x7b\\x31\\x7d\\x2f\\x75\\x6e\\x69\\x2d\\x7b\\x30\\x7d\\x20\\x80\\x08\\x2a\\x10"
+        "\\x80\\x08\\x81\\x08\\x82\\x08\\x83\\x08\\x84\\x08\\x85\\x08\\x86\\x08\\x87\\x08"
+    ]