From 773cff1147e756eb9be6d4a56dc5f70537f172fc Mon Sep 17 00:00:00 2001 From: ramverma Date: Sat, 14 Jul 2018 19:05:57 +0100 Subject: [PATCH] Adding client full module to apex-pdp Change-Id: Id6e4e37b7740eeb3d83998e596c0c963c93e64f2 Issue-ID: POLICY-864 Signed-off-by: ramverma --- client/client-deployment/pom.xml | 1 - client/client-full/pom.xml | 183 + .../apex/client/full/rest/ApexServicesRest.java | 84 + .../client/full/rest/ApexServicesRestMain.java | 207 + .../rest/ApexServicesRestParameterException.java | 49 + .../full/rest/ApexServicesRestParameterParser.java | 116 + .../full/rest/ApexServicesRestParameters.java | 115 + .../apex/client/full/rest/ParameterCheck.java | 211 + .../policy/apex/client/full/rest/package-info.java | 27 + .../src/main/resources/webapp/WEB-INF/web.xml | 46 + .../main/resources/webapp/css/interfaceAssets.css | 3454 ++++++ .../src/main/resources/webapp/css/styles.css | 296 + .../src/main/resources/webapp/images/Apex.png | Bin 0 -> 341009 bytes .../src/main/resources/webapp/images/logo_onap.png | Bin 0 -> 21360 bytes .../src/main/resources/webapp/index.html | 102 + .../src/main/resources/webapp/js/ApexMain.js | 43 + .../resources/webapp/js/jquery/jquery-1.12.4.js | 11551 +++++++++++++++++++ .../webapp/resources/16px/deploy_white_16px.svg | 16 + .../webapp/resources/16px/eye_white_16px.svg | 13 + .../webapp/resources/16px/note_white_16px.svg | 1 + .../resources/16px/rowCollapsed_black_16px.svg | 19 + .../resources/16px/rowExpanded_black_16px.svg | 18 + .../webapp/resources/16px/settings_black_16px.svg | 20 + .../src/main/resources/webapp/resources/screen.svg | 28 + .../webapp/resources/systemBar/help_black.svg | 19 + .../webapp/resources/systemBar/logout_black.svg | 15 + .../src/main/resources/webapp/resources/video.svg | 30 + client/client-monitoring/pom.xml | 1 - client/pom.xml | 1 + 29 files changed, 16664 insertions(+), 2 deletions(-) create mode 100644 client/client-full/pom.xml create mode 100644 client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRest.java create mode 100644 client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestMain.java create mode 100644 client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameterException.java create mode 100644 client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameterParser.java create mode 100644 client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameters.java create mode 100644 client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ParameterCheck.java create mode 100644 client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/package-info.java create mode 100644 client/client-full/src/main/resources/webapp/WEB-INF/web.xml create mode 100644 client/client-full/src/main/resources/webapp/css/interfaceAssets.css create mode 100644 client/client-full/src/main/resources/webapp/css/styles.css create mode 100644 client/client-full/src/main/resources/webapp/images/Apex.png create mode 100644 client/client-full/src/main/resources/webapp/images/logo_onap.png create mode 100644 client/client-full/src/main/resources/webapp/index.html create mode 100644 client/client-full/src/main/resources/webapp/js/ApexMain.js create mode 100644 client/client-full/src/main/resources/webapp/js/jquery/jquery-1.12.4.js create mode 100644 client/client-full/src/main/resources/webapp/resources/16px/deploy_white_16px.svg create mode 100644 client/client-full/src/main/resources/webapp/resources/16px/eye_white_16px.svg create mode 100644 client/client-full/src/main/resources/webapp/resources/16px/note_white_16px.svg create mode 100644 client/client-full/src/main/resources/webapp/resources/16px/rowCollapsed_black_16px.svg create mode 100644 client/client-full/src/main/resources/webapp/resources/16px/rowExpanded_black_16px.svg create mode 100644 client/client-full/src/main/resources/webapp/resources/16px/settings_black_16px.svg create mode 100644 client/client-full/src/main/resources/webapp/resources/screen.svg create mode 100644 client/client-full/src/main/resources/webapp/resources/systemBar/help_black.svg create mode 100644 client/client-full/src/main/resources/webapp/resources/systemBar/logout_black.svg create mode 100644 client/client-full/src/main/resources/webapp/resources/video.svg diff --git a/client/client-deployment/pom.xml b/client/client-deployment/pom.xml index f4ecfe7af..b214700d6 100644 --- a/client/client-deployment/pom.xml +++ b/client/client-deployment/pom.xml @@ -145,7 +145,6 @@ org.apache.maven.plugins maven-war-plugin - 2.6 ui src/main/resources/webapp diff --git a/client/client-full/pom.xml b/client/client-full/pom.xml new file mode 100644 index 000000000..399664b14 --- /dev/null +++ b/client/client-full/pom.xml @@ -0,0 +1,183 @@ + + + 4.0.0 + + org.onap.policy.apex-pdp.client + client + 2.0.0-SNAPSHOT + + + client-full + ${project.artifactId} + Web clients for managing Apex engines + + + + org.onap.policy.apex-pdp.client + client-editor + ${project.version} + + + org.onap.policy.apex-pdp.client + client-monitoring + ${project.version} + + + org.onap.policy.apex-pdp.client + client-deployment + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-grizzly2-http + ${version.jersey} + + + + + + + src/main/resources + + webapp/**/*.* + + + + ../client-monitoring/target/client-monitoring-${project.version} + + **/*.* + + webapp/monitoring + + + ../client-editor/target/client-editor-${project.version} + + **/*.* + + webapp/editor + + + ../client-deployment/target/client-deployment-${project.version} + + **/*.* + + webapp/deployment + + + + install + ${project.build.directory}/classes + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + + + ${project.artifactId}-uber-${project.version} + true + full + + + *:* + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + reference.conf + + + log4j.properties + + + org.onap.policy.apex.client.full.rest.ApexServicesRestMain + + + + + + org.apache.maven.plugins + maven-war-plugin + + ui + target/classes/webapp + src/main/resources/webapp/WEB-INF/web.xml + + + + prepare-package + + war + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.0.0 + + + attach-artifacts + package + + attach-artifact + + + + + ${project.build.directory}/${project.artifactId}-${project.version}-ui.war + war + + + ${project.build.directory}/${project.artifactId}-uber-${project.version}.jar + uber.jar + + + + + + + + + \ No newline at end of file diff --git a/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRest.java b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRest.java new file mode 100644 index 000000000..3a38dc082 --- /dev/null +++ b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRest.java @@ -0,0 +1,84 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.client.full.rest; + +import org.glassfish.grizzly.http.server.HttpServer; +import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; +import org.glassfish.jersey.media.multipart.MultiPartFeature; +import org.glassfish.jersey.server.ResourceConfig; +import org.onap.policy.apex.model.utilities.Assertions; +import org.slf4j.ext.XLogger; +import org.slf4j.ext.XLoggerFactory; + +/** + * This class is used to launch the services. It creates a Grizzly embedded web server and runs the services. + */ +public class ApexServicesRest { + // Logger for this class + private static final XLogger logger = XLoggerFactory.getXLogger(ApexServicesRest.class); + + // The HTTP server exposing JAX-RS resources defined in this application. + private HttpServer server; + + /** + * Starts the HTTP server for the Apex services client on the default base URI and with the default REST packages + */ + public ApexServicesRest() { + this(new ApexServicesRestParameters()); + } + + /** + * Starts the HTTP server for the Apex services client + * + * @param parameters: The Apex parameters to use to start the server + */ + public ApexServicesRest(final ApexServicesRestParameters parameters) { + Assertions.argumentNotNull(parameters, "parameters may not be null"); + + logger.debug("Apex services RESTful client starting . . ."); + + // Create a resource configuration that scans for JAX-RS resources and providers + // in org.onap.policy.apex.client.full.rest package + final ResourceConfig rc = new ResourceConfig().packages(parameters.getRESTPackages()); + + // Add MultiPartFeature class for jersey-media-multipart + rc.register(MultiPartFeature.class); + + // create and start a new instance of grizzly http server + // exposing the Jersey application at BASE_URI + server = GrizzlyHttpServerFactory.createHttpServer(parameters.getBaseURI(), rc); + + // Add static content + server.getServerConfiguration().addHttpHandler(new org.glassfish.grizzly.http.server.CLStaticHttpHandler( + ApexServicesRest.class.getClassLoader(), "/webapp/"), parameters.getStaticPath()); + + logger.debug("Apex services RESTful client started"); + } + + /** + * Shut down the web server + */ + public void shutdown() { + logger.debug("Apex services RESTful client shutting down . . ."); + server.shutdown(); + logger.debug("Apex services RESTful client shut down"); + } +} diff --git a/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestMain.java b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestMain.java new file mode 100644 index 000000000..a9e5db9d0 --- /dev/null +++ b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestMain.java @@ -0,0 +1,207 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.client.full.rest; + +import java.io.PrintStream; + +/** + * This class is the main class that is used to launch the Apex editor from the command line. + * + */ +public class ApexServicesRestMain { + /** + * The Enum EditorState holds the current state of the editor. + */ + // Editor state + public enum EditorState { + /** The editor is stopped. */ + STOPPED, + /** The editor is ready to run. */ + READY, + /** The editor is getting ready to run. */ + INITIALIZING, + /** The editor is running. */ + RUNNING + }; + + private static final int EDITOR_RNNING_CHECK_TIMEOUT = 1000; + + private EditorState state = EditorState.STOPPED; + + // The Apex editor this class is running + private ApexServicesRest apexServices = null; + + // The parameters for the editor + private ApexServicesRestParameters parameters = null; + + // Output and error streams for messages + private final PrintStream outStream; + + /** + * Main method, main entry point for command. + * + * @param args The command line arguments for the editor + */ + public static void main(final String[] args) { + try { + final ApexServicesRestMain editorMain = new ApexServicesRestMain(args, System.out); + editorMain.init(); + } catch (final Exception e) { + System.err.println(e.getMessage()); + } + } + + /** + * Constructor, kicks off the editor. + * + * @param args The command line arguments for the editor + * @param outStream The stream for output messages + */ + public ApexServicesRestMain(final String[] args, final PrintStream outStream) { + // Save the streams for output and error + this.outStream = outStream; + + // Editor parameter parsing + final ApexServicesRestParameterParser parser = new ApexServicesRestParameterParser(); + + try { + // Get and check the parameters + parameters = parser.parse(args); + } catch (final ApexServicesRestParameterException e) { + throw new ApexServicesRestParameterException( + "Apex Editor REST endpoint (" + this.toString() + ") parameter error, " + e.getMessage() + '\n' + + parser.getHelp(ApexServicesRestMain.class.getCanonicalName())); + } + + if (parameters.isHelpSet()) { + throw new ApexServicesRestParameterException(parser.getHelp(ApexServicesRestMain.class.getCanonicalName())); + } + + // Validate the parameters + final String validationMessage = parameters.validate(); + if (validationMessage.length() > 0) { + throw new ApexServicesRestParameterException( + "Apex Editor REST endpoint (" + this.toString() + ") parameters invalid, " + validationMessage + + '\n' + parser.getHelp(ApexServicesRestMain.class.getCanonicalName())); + } + + state = EditorState.READY; + } + + /** + * Initialize the Apex editor. + */ + public void init() { + outStream.println("Apex Editor REST endpoint (" + this.toString() + ") starting at " + + parameters.getBaseURI().toString() + " . . ."); + + try { + state = EditorState.INITIALIZING; + + // Start the editor + apexServices = new ApexServicesRest(parameters); + + // Add a shutdown hook to shut down the editor when the process is exiting + Runtime.getRuntime().addShutdownHook(new Thread(new ApexServicesRestShutdownHook())); + + state = EditorState.RUNNING; + + if (parameters.getTimeToLive() == ApexServicesRestParameters.INFINITY_TIME_TO_LIVE) { + outStream.println("Apex Editor REST endpoint (" + this.toString() + ") started at " + + parameters.getBaseURI().toString()); + } else { + outStream.println("Apex Editor REST endpoint (" + this.toString() + ") started"); + } + + // Find out how long is left to wait + long timeRemaining = parameters.getTimeToLive(); + while (timeRemaining == ApexServicesRestParameters.INFINITY_TIME_TO_LIVE || timeRemaining > 0) { + // decrement the time to live in the non-infinity case + if (timeRemaining > 0) { + timeRemaining--; + } + + // Wait for a second + Thread.sleep(EDITOR_RNNING_CHECK_TIMEOUT); + } + } catch (final Exception e) { + outStream.println( + "Apex Editor REST endpoint (" + this.toString() + ") failed at with error: " + e.getMessage()); + } finally { + if (apexServices != null) { + apexServices.shutdown(); + apexServices = null; + } + state = EditorState.STOPPED; + } + } + + /** + * Get the editor state. + * + * @return the state + */ + public EditorState getState() { + return state; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + final StringBuilder ret = new StringBuilder(); + ret.append(this.getClass().getSimpleName()).append(": Config=[").append(parameters).append("], State=") + .append(this.getState()); + return ret.toString(); + } + + /** + * Explicitly shut down the editor. + */ + public void shutdown() { + if (apexServices != null) { + outStream.println("Apex Editor REST endpoint (" + this.toString() + ") shutting down"); + apexServices.shutdown(); + } + state = EditorState.STOPPED; + outStream.println("Apex Editor REST endpoint (" + this.toString() + ") shut down"); + } + + /** + * This class is a shutdown hook for the Apex editor command. + */ + private class ApexServicesRestShutdownHook implements Runnable { + /* + * (non-Javadoc) + * + * @see java.lang.Runnable#run() + */ + @Override + public void run() { + if (apexServices != null) { + apexServices.shutdown(); + } + } + } +} diff --git a/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameterException.java b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameterException.java new file mode 100644 index 000000000..8b966b13f --- /dev/null +++ b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameterException.java @@ -0,0 +1,49 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.client.full.rest; + +/** + * A run time exception used to report parsing and parameter input errors. + * + * User: ewatkmi Date: 31 Jul 2017 + */ +public class ApexServicesRestParameterException extends IllegalArgumentException { + private static final long serialVersionUID = 6520231162404452427L; + + /** + * Create an ApexServicesRestParameterException with a message + * + * @param message the message + */ + public ApexServicesRestParameterException(final String message) { + super(message); + } + + /** + * Create an ApexServicesRestParameterException with a message and an exception. + * + * @param message the message + * @param throwable The exception that caused the exception + */ + public ApexServicesRestParameterException(final String message, final Throwable throwable) { + super(message, throwable); + } +} diff --git a/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameterParser.java b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameterParser.java new file mode 100644 index 000000000..28b0d4cf4 --- /dev/null +++ b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameterParser.java @@ -0,0 +1,116 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.client.full.rest; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Arrays; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; + +/** + * This class reads and handles command line parameters to the Apex RESTful services + * + * User: ewatkmi Date: 31 Jul 2017 + */ +public class ApexServicesRestParameterParser { + // Apache Commons CLI options + Options options; + + /** + * Construct the options for the CLI RESTful services + */ + public ApexServicesRestParameterParser() { + options = new Options(); + options.addOption("h", "help", false, "outputs the usage of this command"); + options.addOption(Option.builder("p").longOpt("port").desc("port to use for the Apex Services REST calls") + .hasArg().argName("PORT").required(false).type(Number.class).build()); + options.addOption(Option.builder("t").longOpt("time-to-live") + .desc("the amount of time in seconds that the server will run for before terminating").hasArg() + .argName("TIME_TO_LIVE").required(false).type(Number.class).build()); + } + + /** + * Parse the command line options. + * + * @param args the arguments + * @return parsed parameters + */ + public ApexServicesRestParameters parse(final String[] args) { + CommandLine commandLine = null; + try { + commandLine = new DefaultParser().parse(options, args); + } catch (final ParseException e) { + throw new ApexServicesRestParameterException( + "invalid command line arguments specified : " + e.getMessage()); + } + + final ApexServicesRestParameters parameters = new ApexServicesRestParameters(); + final String[] remainingArgs = commandLine.getArgs(); + + if (commandLine.getArgs().length > 0) { + throw new ApexServicesRestParameterException( + "too many command line arguments specified : " + Arrays.toString(remainingArgs)); + } + + if (commandLine.hasOption('h')) { + parameters.setHelp(true); + } + try { + if (commandLine.hasOption('p')) { + parameters.setRESTPort(((Number) commandLine.getParsedOptionValue("port")).intValue()); + } + } catch (final ParseException e) { + throw new ApexServicesRestParameterException("error parsing argument \"port\" :" + e.getMessage(), e); + } + try { + if (commandLine.hasOption('t')) { + parameters.setTimeToLive(((Number) commandLine.getParsedOptionValue("time-to-live")).longValue()); + } + } catch (final ParseException e) { + throw new ApexServicesRestParameterException("error parsing argument \"time-to-live\" :" + e.getMessage(), + e); + } + + return parameters; + } + + /** + * Get help information. + * + * @param mainClassName the main class name for the help output + * @return help string + */ + public String getHelp(final String mainClassName) { + final StringWriter stringWriter = new StringWriter(); + final PrintWriter stringPrintWriter = new PrintWriter(stringWriter); + + final HelpFormatter helpFormatter = new HelpFormatter(); + helpFormatter.printHelp(stringPrintWriter, 120, mainClassName + " [options...] ", "", options, 0, 0, ""); + + return stringWriter.toString(); + } +} diff --git a/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameters.java b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameters.java new file mode 100644 index 000000000..17f0eac60 --- /dev/null +++ b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ApexServicesRestParameters.java @@ -0,0 +1,115 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.client.full.rest; + +import java.net.URI; + +/** + * This class reads and handles command line parameters to the Apex RESTful services + * + * User: ewatkmi Date: 31 Jul 2017 + */ +public class ApexServicesRestParameters { + public static final int DEFAULT_REST_PORT = 18989; + public static final int INFINITY_TIME_TO_LIVE = -1; + + // Base URI the HTTP server will listen on + private static final String DEFAULT_SERVER_URI_ROOT = "http://localhost:"; + private static final String DEFAULT_REST_PATH = "/apexservices/"; + private static final String DEFAULT_STATIC_PATH = "/"; + + // Package that will field REST requests + public static final String[] DEFAULT_PACKAGES = new String[] { "org.onap.policy.apex.client.deployment.rest", + "org.onap.policy.apex.client.editor.rest", "org.onap.policy.apex.client.monitoring.rest" }; + + // The services parameters + private boolean helpSet = false; + private int restPort = DEFAULT_REST_PORT; + private long timeToLive = INFINITY_TIME_TO_LIVE; + + public String validate() { + String validationMessage = ""; + validationMessage += validatePort(); + validationMessage += validateTimeToLive(); + + return validationMessage; + } + + public URI getBaseURI() { + return URI.create(DEFAULT_SERVER_URI_ROOT + restPort + DEFAULT_REST_PATH); + } + + public String[] getRESTPackages() { + return DEFAULT_PACKAGES; + } + + public String getStaticPath() { + return DEFAULT_STATIC_PATH; + } + + private String validatePort() { + if (restPort < 1024 || restPort > 65535) { + return "port must be greater than 1023 and less than 65536\n"; + } else { + return ""; + } + } + + private String validateTimeToLive() { + if (timeToLive < -1) { + return "time to live must be greater than -1 (set to -1 to wait forever)\n"; + } else { + return ""; + } + } + + public boolean isHelpSet() { + return helpSet; + } + + public void setHelp(final boolean helpSet) { + this.helpSet = helpSet; + } + + public int getRESTPort() { + return restPort; + } + + public void setRESTPort(final int restPort) { + this.restPort = restPort; + } + + public long getTimeToLive() { + return timeToLive; + } + + public void setTimeToLive(final long timeToLive) { + this.timeToLive = timeToLive; + } + + @Override + public String toString() { + final StringBuilder ret = new StringBuilder(); + ret.append(this.getClass().getSimpleName()).append(": URI=").append(this.getBaseURI()).append(", TTL=") + .append(this.getTimeToLive()).append("sec"); + return ret.toString(); + } +} diff --git a/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ParameterCheck.java b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ParameterCheck.java new file mode 100644 index 000000000..3384a17f8 --- /dev/null +++ b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/ParameterCheck.java @@ -0,0 +1,211 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.client.full.rest; + +import java.util.Map; + +import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; +import org.slf4j.ext.XLogger; +import org.slf4j.ext.XLoggerFactory; + +/** + * The Class ParameterCheck is used to check parameters passed to the servlet. + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ +public final class ParameterCheck { + private static final int MAX_PORT = 65535; + + /** + * private constructor to prevent subclassing of this utility class. + */ + private ParameterCheck() {} + + /** + * The Enum StartStop is used to hold . + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ + public enum StartStop { + /** Start of an Apex engine has been ordered. */ + START, + /** Stop of an Apex engine has been ordered. */ + STOP + }; + + private static final XLogger LOGGER = XLoggerFactory.getXLogger(ParameterCheck.class); + + private static final String HOSTNAME_PAR = "hostname"; + private static final String PORT_PAR = "port"; + private static final String AXARTIFACTKEY_PAR = "AxArtifactKey"; + + /** + * Gets the host name. + * + * @param parameterMap the parameter map + * @return the host name + */ + public static String getHostName(final Map parameterMap) { + if (!parameterMap.containsKey(HOSTNAME_PAR)) { + LOGGER.warn("parameter \"" + HOSTNAME_PAR + "\" not found"); + return null; + } + + final String[] hostNameValue = parameterMap.get(HOSTNAME_PAR); + + if (hostNameValue.length == 0 || hostNameValue[0].trim().length() == 0) { + LOGGER.warn("value of parameter \"" + HOSTNAME_PAR + "\" not found"); + return null; + } + + return hostNameValue[0]; + } + + /** + * Gets the port. + * + * @param parameterMap the parameter map + * @return the port + */ + public static int getPort(final Map parameterMap) { + if (!parameterMap.containsKey(PORT_PAR)) { + LOGGER.warn("parameter \"" + PORT_PAR + "\" not found"); + return -1; + } + + final String[] portValue = parameterMap.get(PORT_PAR); + + if (portValue.length == 0 || portValue[0].trim().length() == 0) { + LOGGER.warn("value of parameter \"" + PORT_PAR + "\" not found"); + return -1; + } + + int port = -1; + try { + port = Integer.parseInt(portValue[0]); + } catch (final Exception e) { + LOGGER.warn("value \"" + portValue[0] + "\"of parameter \"" + PORT_PAR + "\" not a valid integer", e); + return -1; + } + + if (port <= 0 || port > MAX_PORT) { + LOGGER.warn("value \"" + portValue[0] + "\"of parameter \"" + PORT_PAR + + "\" not a valid port between 0 and 65535"); + return -1; + } + + return port; + } + + /** + * Gets the engine key. + * + * @param parameterMap the parameter map + * @return the engine key + */ + public static AxArtifactKey getEngineKey(final Map parameterMap) { + String artifactKeyParameter = null; + for (final String parameter : parameterMap.keySet()) { + // Check for an AxArtifactKey parameter + if (parameter.startsWith(AXARTIFACTKEY_PAR)) { + artifactKeyParameter = parameter; + break; + } + } + if (artifactKeyParameter == null) { + LOGGER.warn("parameter \"" + AXARTIFACTKEY_PAR + "\" not found"); + return null; + } + + final String[] axArtifactKeyArray = artifactKeyParameter.split("#"); + + if (axArtifactKeyArray.length != 2) { + LOGGER.warn("value \"" + artifactKeyParameter + "\" of parameter \"" + AXARTIFACTKEY_PAR + "\" not valid"); + return null; + } + + return new AxArtifactKey(axArtifactKeyArray[1]); + } + + /** + * Gets the start stop. + * + * @param parameterMap the parameter map + * @param engineKey the engine key + * @return the start stop + */ + public static ParameterCheck.StartStop getStartStop(final Map parameterMap, + final AxArtifactKey engineKey) { + final String startStopPar = AXARTIFACTKEY_PAR + '#' + engineKey.getID(); + if (!parameterMap.containsKey(startStopPar)) { + LOGGER.warn("parameter \"" + startStopPar + "\" not found"); + return null; + } + + final String[] startStopValue = parameterMap.get(startStopPar); + + if (startStopValue.length == 0 || startStopValue[0].trim().length() == 0) { + LOGGER.warn("value of parameter \"" + startStopPar + "\" not found"); + return null; + } + + ParameterCheck.StartStop startStop; + if (startStopValue[0].equalsIgnoreCase("start")) { + startStop = ParameterCheck.StartStop.START; + } else if (startStopValue[0].equalsIgnoreCase("stop")) { + startStop = ParameterCheck.StartStop.STOP; + } else { + LOGGER.warn("value \"" + startStopValue[0] + "\"of parameter \"" + startStopPar + + "\" not \"start\" or \"stop\""); + return null; + } + + return startStop; + } + + /** + * Find and return a long value with the given name. + * + * @param parameterMap The parameter map containing the value + * @param longName The name of the long parameter + * @return The long value + */ + public static long getLong(final Map parameterMap, final String longName) { + if (!parameterMap.containsKey(longName)) { + LOGGER.warn("parameter \"" + longName + "\" not found"); + return -1; + } + + final String[] longValue = parameterMap.get(longName); + + if (longValue.length == 0 || longValue[0].trim().length() == 0) { + LOGGER.warn("value of parameter \"" + longName + "\" not found"); + return -1; + } + + try { + return Long.parseLong(longValue[0]); + } catch (final Exception e) { + LOGGER.warn("value \"" + longValue[0] + "\"of parameter \"" + longName + "\" not a valid long", e); + return -1; + } + } +} diff --git a/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/package-info.java b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/package-info.java new file mode 100644 index 000000000..de6130363 --- /dev/null +++ b/client/client-full/src/main/java/org/onap/policy/apex/client/full/rest/package-info.java @@ -0,0 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +/** + * Implements the RESTful client with full functionality. + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ + +package org.onap.policy.apex.client.full.rest; diff --git a/client/client-full/src/main/resources/webapp/WEB-INF/web.xml b/client/client-full/src/main/resources/webapp/WEB-INF/web.xml new file mode 100644 index 000000000..b0507cf26 --- /dev/null +++ b/client/client-full/src/main/resources/webapp/WEB-INF/web.xml @@ -0,0 +1,46 @@ + + + + + + + apex-services.rest + org.glassfish.jersey.servlet.ServletContainer + + jersey.config.server.provider.packages + org.onap.policy.apex.client + + + jersey.config.server.provider.classnames + org.glassfish.jersey.media.multipart.MultiPartFeature + + 1 + + + apex-services.rest + /apexservices/* + + + \ No newline at end of file diff --git a/client/client-full/src/main/resources/webapp/css/interfaceAssets.css b/client/client-full/src/main/resources/webapp/css/interfaceAssets.css new file mode 100644 index 000000000..af56e816a --- /dev/null +++ b/client/client-full/src/main/resources/webapp/css/interfaceAssets.css @@ -0,0 +1,3454 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +@charset "utf-8"; + +html { + position: relative; + font-family: Arial, Helvetica, sans-serif; + font-size: 10px !important; + line-height: 10px !important; + margin: 0; + padding: 0; + width: 100%; + height: 100%; +} + +body { + font-size: 1.6rem; + line-height: 1.2rem; + color: #333333; + background-color: #ffffff; + margin: 0; + padding: 0; +} + +*:focus, .ebInput:focus, .ebIcon:focus, .ebCheckbox:focus+.ebCheckbox-inputStatus:after, + .ebRadioBtn:focus+.ebRadioBtn-inputStatus:after, textarea:focus, button:focus, + i:focus { + /** + * FF outline do not looks same as Chrome so adding box shadow + * FF outline is not working as expected + **/ + /* + * one way of outline + outline: #4d90fe auto 5px; + box-shadow: 0 0 0 1px #4d90fe; + -webkit-box-shadow: none; + */ + outline: none; // + box-shadow: 0 0 2px 1px #FFFFFF; +} + +h1, h2, h3, h4, h5, h6 { + color: #4d4d4d; + font-weight: bold; +} + +h1 { + line-height: 3.2rem; + font-size: 3.2rem; + font-weight: normal; + padding: 0.6rem 0; + margin: 0 0 0.6rem 0; +} + +h2 { + border-bottom: #000000 solid 1px; + line-height: 2.0rem; + font-size: 2.0rem; + font-weight: normal; + padding: 1.2rem 0 0.7rem 0; + margin: 0 0 0.4rem 0; +} + +h3 { + border-bottom: #7f7f7f solid 1px; + line-height: 1.6rem; + font-size: 1.6rem; + padding: 1.2rem 0 0.7rem 0; + margin: 0 0 0.4rem 0; + font-weight: normal; + color: #333333; +} + +h4 { + border-bottom: #b2b2b2 solid 1px; + line-height: 1.2rem; + font-size: 1.2rem; + padding: 0.6rem 0; + margin: 0 0 0.6rem 0; + font-weight: bold; + color: #333333; +} + +.ebLayout-SectionSubheading h3 { + float: left; + margin: 0; + border-bottom: none; +} + +/* System Bar */ +.ebSystemBar { + position: relative; + width: 100%; + height: 40px; + border-top: 4px solid #0066b3; + background-image: linear-gradient(180deg, #ffffff 0%, #f4f4f4 100%); + box-shadow: 0 1px 2px #D2D2D2; +} + +.ebSystemBar::before { + position: absolute; + top: -4px; + left: 0; + width: 100%; + height: 4px; + content: ""; + font-size: 0; + background: #0066b3; + background: -o-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 + 75%, #db0050 100%); + background: -moz-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, + #151f77 75%, #db0050 100%); + background: -webkit-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, + #151f77 75%, #db0050 100%); + background: -ms-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 + 75%, #db0050 100%); + background: -webkit-gradient(linear, left top, right top, color-stop(0.1, #a2c517), + color-stop(0.3, #009046), color-stop(0.5, #0082b6), + color-stop(0.75, #151f77), color-stop(1, #db0050)); + background: linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 75% + , #db0050 100%); +} + +.ebSystemBar-logo { + position: absolute; + top: 0; + bottom: 0; + left: 0; + height: 40px; + width: 20px; + padding: 0 10px; + background: url('../resources/systemBar/econ01.svg') no-repeat center + center transparent; + background-size: 20px; +} + +.ebSystemBar-topMenuName { + display: inline-block; + padding: 0 5px 0 40px; + margin: 0; + line-height: 40px; + font-size: 16.8px; + color: #58585A; +} + +.ebSystemBar-topMenu { + position: absolute; + top: 0; + bottom: 0; + left: 50px; + list-style: none; + height: 40px; + margin: 0; + padding: 0; +} + +.ebSystemBar-topMenu li { + display: inline-block; +} + +.ebSystemBar-topMenu a { + padding: 0 5px 0 15px; + margin: 0; + font-size: 1.6em; + line-height: 40px; + color: #58585a; + cursor: pointer; + text-decoration: none; +} + +.ebSystemBar-topMenu a:hover { + color: #0066B3; +} + +.ebSystemBar-rightButton { + float: right; + display: inline-block; + line-height: 40px; + vertical-align: middle; +} + +.ebSystemBar-rightButton a { + display: block; + padding: 0 18px 0 18px; + font-size: 1.3rem; + color: #0066B3; + background-color: transparent; + background-repeat: no-repeat; + background-position: 18px center; + border-left: solid 1px #D2D2D2; +} + +.ebSystemBar-rightButton a:hover { + text-decoration: underline; +} + +.ebSystemBar-rightButton:hover { + background-image: linear-gradient(180deg, #f2f2f2 0%, #e8e8e8 100%); +} + +@media screen and (max-width: 640px) { + .ebSystemBar-topBar-rightButton a { + width: 0; + padding-left: 34px; + text-indent: -9999px; + } +} + +/* Inline Message */ +.ebInlineMessage { + padding: 5px 15px 0px 7px; + font-size: 0; + position: fixed; + bottom: 0; + left: 2; + width: calc(100% - 30px); + height: 66px; + border: 3px solid #adadad; + background-color: #FFFFFF; +} + +.ebInlineMessage-iconHolder, .ebInlineMessage-contentHolder { + display: inline-block; + vertical-align: top; +} + +.ebInlineMessage-iconHolder { + width: 20px; + margin: 0 12px 0 0; +} + +.ebInlineMessage-contentHolder { + width: calc(100% - 32px); + font-size: 1.2rem; +} + +.ebInlineMessage-header { + margin-top: 3px; + font-size: 14px; + line-height: 14px; +} + +.ebInlineMessage-separator { + height: 1px; + margin: 12px 0; + background-color: #adadad; + opacity: 0.3; +} + +.ebInlineMessage-description { + color: #666666; + white-space: pre; +} + +/* Table */ +.ebTable { + margin: 0; + padding: 0; + table-layout: fixed; + border-left: 1px solid #cccccc; // + ewatkmi: added for visible border; + border-right: 1px solid #cccccc; // + ewatkmi: added for visible border; + border-bottom: 1px solid #cccccc; // + ewatkmi: added for visible border; + border-collapse: collapse; + border-spacing: 0; + color: #1a1a1a; +} + +.ebTable_fullW { + width: 100%; +} + +.ebTable-th_resizable, .ebTable-th_sortable { + position: relative; +} + +.ebTable-th_resizable .ebTable-headerResize { + position: absolute; + top: -20px; + bottom: -20px; + right: -12px; + width: 10px; + cursor: col-resize; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + -webkit-user-select: none; + user-select: none; +} + +.ebTable-th_sortable { + cursor: pointer !important; +} + +.ebTable-th_sortable .ebTable-header { + display: flex; + flex-wrap: nowrap; + flex-direction: row; + align-items: center; +} + +.ebTable-th_sortable .ebTable-headerText { + flex-shrink: 1; + flex-grow: 0; + margin-right: 8px; + box-sizing: border-box; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + -webkit-user-select: none; + user-select: none; +} + +.ebTable-th_sortable .ebTable-headerSort { + flex-grow: 0; + flex-shrink: 0; + flex-basis: 10px; + margin-left: 4px; +} + +.ebTable-th_sortable .ebTable-headerSortOrder { + flex-grow: 1; + color: #999999; + font-weight: normal; +} + +.ebTable-header { + position: relative; + display: block; + width: 100%; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.ebTable-headerText { + padding: 4px 0; + display: inline-block; + vertical-align: middle; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.ebTable thead tr { + height: 3.2rem; + font-size: 1.2rem; + font-weight: bold; + text-align: left; +} + +.ebTable thead tr th { + padding-left: 1.2rem; + padding-right: 1.2rem; + text-align: left; + cursor: default; + border-top: #cccccc solid 1px; + border-bottom: #cccccc solid 1px; + border-right: #e6e6e6 solid 1px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.ebTable thead tr th:last-child { + border-right: none; +} + +.ebTable thead tr:hover { + background: none; +} + +.ebTable thead tr:active { + background: none; +} + +.ebTable tbody tr { + height: 3.2rem; + font-size: 1.2rem; + border-bottom: #e6e6e6 solid 1px; +} + +.ebTable tbody tr td { + margin: 0; + padding: 0 1.2rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + cursor: default; + border-right: #e6e6e6 solid 1px; +} + +.ebTable tbody tr td:last-child { + border-right: none; +} + +.ebTable_striped tbody tr { + border-bottom: none; +} + +.ebTable_striped tbody tr td { + border-right: none; +} + +.ebTable_striped tbody tr:nth-of-type(even) { + background-color: #f2f2f2; +} + +.ebTable_striped tbody tr:nth-of-type(odd) { // + ewatkmi: added for nested tables; + background-color: #ffffff; +} + +.ebTable_compact tbody tr { + height: 2.6rem; +} + +.ebTable_expandableStriped { + border-collapse: separate; +} + +.ebTable_expandableStriped tbody tr { + border-bottom: none; +} + +.ebTable_expandableStriped tbody tr td { + border-right: none; +} + +.ebTable_expandableStriped tbody tr:nth-of-type(4n-1), + .ebTable_expandableStriped tbody tr:nth-of-type(4n) { + background-color: #f2f2f2; +} + +.ebTable_pinstripe tr td { + border-bottom: #e6e6e6 solid 1px; +} + +.ebTable_color_paleBlue.ebTable thead tr th { + background-color: #99ddee; + border-top: none; + border-bottom: none; +} + +.ebTable_color_paleBlue.ebTable_striped tbody tr:nth-of-type(even) { + background-color: #e6f6fb; +} + +.ebTable_color_purple.ebTable thead tr th { + background-color: #ca9bc1; + border-top: none; + border-bottom: none; +} + +.ebTable_color_purple.ebTable_striped tbody tr:nth-of-type(even) { + background-color: #f2e6ef; +} + +.ebTable_color_darkGreen.ebTable thead tr th { + background-color: #99c0bf; + border-top: none; + border-bottom: none; +} + +.ebTable_color_darkGreen.ebTable_striped tbody tr:nth-of-type(even) { + background-color: #e6efef; +} + +.ebTable_color_green.ebTable thead tr th { + background-color: #d0e3a2; + border-top: none; + border-bottom: none; +} + +.ebTable_color_green.ebTable_striped tbody tr:nth-of-type(even) { + background-color: #f3f8e8; +} + +.ebTable_color_yellow.ebTable thead tr th { + background-color: #fde499; + border-top: none; + border-bottom: none; +} + +.ebTable_color_yellow.ebTable_striped tbody tr:nth-of-type(even) { + background-color: #fff8e6; +} + +.ebTable_color_orange.ebTable thead tr th { + background-color: #f9d099; + border-top: none; + border-bottom: none; +} + +.ebTable_color_orange.ebTable_striped tbody tr:nth-of-type(even) { + background-color: #fef3e6; +} + +.ebTable_color_red.ebTable thead tr th { + background-color: #f4a6a3; + border-top: none; + border-bottom: none; +} + +.ebTable_color_red.ebTable_striped tbody tr:nth-of-type(even) { + background-color: #fce9e8; +} + +.ebTable_borderTop_none thead tr th { + border-top: none; +} + +.ebTable_verticalBorders_none thead tr th, .ebTable_verticalBorders_none tr td + { + border-right: none !important; + border-left: none !important; +} + +.ebTable_wrapHeaders th { + white-space: normal !important; + text-overflow: inherit !important; +} + +.ebTable_wrapHeaders th .ebTable-headerText { + white-space: normal !important; + text-overflow: inherit !important; +} + +.ebTable-expandableRow { + height: inherit !important; + display: none; +} + +.ebTable-expandableRow_expanded { + display: table-row; +} + +.ebTable-expandableRow>td { + padding: 0 !important; +} + +.ebTable-expandableRow>td>div { + overflow: hidden; + height: 0; + transition: height 0.3s ease-in-out; +} +/** + * Hover/Active/Selected Effects + * + * Modifiers: + * .ebTable_hoverActive_none (disables native hover and active selectors, primarily for pin columns plugin) + */ +.ebTable { + /** Hover effect **/ + +} + +.ebTable.ebTable:not (.ebTable_hoverActive_none ) tbody tr:not (.ebTable-expandableRow + ):not (.headerRow ):hover>*, .ebTable tbody tr:not (.ebTable-expandableRow + ):not (.headerRow ).ebTableRow_hover>* { + background-image: linear-gradient(0deg, rgba(0, 102, 179, 0.1), + rgba(0, 102, 179, 0.1)); +} + +.ebTable.ebTable_highlightedEffect_solid tbody tr:not (.ebTable-expandableRow + ).ebTableRow_highlighted>* { + background-color: #ffffff !important; +} + +/* Context Menu */ +.ebContextMenu { + position: relative; + width: 16px; + height: 16px; +} + +.ebContextMenu:focus { + outline: none; +} + +.ebContextMenu-ExpandBtn, .ebContextMenu-expandBtn { + width: 16px; + height: 16px; + position: relative; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + -webkit-user-select: none; + user-select: none; +} + +.ebContextMenu-ExpandBtn:focus, .ebContextMenu-expandBtn:focus { + outline: none; +} + +.ebContextMenu-Dropdown, .ebContextMenu-body { + position: absolute; + z-index: 1500; + min-width: 60px; + width: auto; + height: auto; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + -webkit-user-select: none; + user-select: none; + box-shadow: 5px 5px 5px #87888A; +} + +.ebContextMenu-Dropdown_corner_default, + .ebContextMenu-body_corner_default { + position: absolute; + top: 20px; + left: 0px; +} + +.ebContextMenu-Dropdown_corner_topRight, + .ebContextMenu-body_corner_topRight { + position: absolute; + top: 20px; + right: 0px; +} + +.ebContextMenu-Dropdown_corner_bottomLeft, + .ebContextMenu-body_corner_bottomLeft { + position: absolute; + bottom: 20px; + left: 0px; +} + +.ebContextMenu-Dropdown_corner_bottomRight, + .ebContextMenu-body_corner_bottomRight { + position: absolute; + bottom: 20px; + right: 0px; +} + +.ebContextMenu-Dropdown_visible_false, .ebContextMenu-body_visible_false + { + visibility: hidden; +} + +.ebContextMenu-Dropdown_visible_true, .ebContextMenu-body_visible_true { + display: block; +} + +/* Component List */ +.ebComponentList { + position: relative; + z-index: 1500; + padding: 4px 0; + margin: 0; + color: #333333; + list-style: none; + background-color: #ffffff; + border: #bfbfbf solid 1px; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); + border-radius: 3px; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.ebComponentList-group, .ebComponentList-item { + padding: 0 0.8rem; + line-height: 2.4rem; + font-size: 1.2rem; + background-color: #ffffff; +} + +.ebComponentList-iconHolder { + display: inline-block; + vertical-align: middle; + width: 16px; + padding-right: 8px; +} + +.ebComponentList-item { + cursor: pointer; +} + +.ebComponentList-item-name { + display: inline-block; + font-size: 12px; + text-overflow: ellipsis; + overflow: hidden; + width: calc(100% - 24px); + vertical-align: middle; +} + +.ebComponentList-item_icon { + font-size: 0; +} + +.ebComponentList-link, .ebComponentList-item, .ebComponentList-item>*, + .ebComponentList-group-header { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.ebComponentList-group { + display: block; +} + +.ebComponentList-group_expandable_collapsed>.ebComponentList-group-header, + .ebComponentList-group_expandable_expanded>.ebComponentList-group-header + { + font-size: 0; + cursor: pointer; + white-space: nowrap; + height: 24px; + vertical-align: middle; +} + +.ebComponentList-group_expandable_collapsed>.ebComponentList-group-header .ebComponentList-iconHolder+.ebComponentList-group-name, + .ebComponentList-group_expandable_expanded>.ebComponentList-group-header .ebComponentList-iconHolder+.ebComponentList-group-name + { + width: calc(100% - 40px); +} + +.ebComponentList-group_expandable_collapsed>.ebComponentList-inner, + .ebComponentList-group_expandable_expanded>.ebComponentList-inner { + padding: 0 0 0 24px; + margin: 0 -0.8rem; +} + +.ebComponentList-group_expandable_collapsed>.ebComponentList-group-header + { + border: none; +} + +.ebComponentList-group_expandable_collapsed>.ebComponentList-inner .ebComponentList-item + { + overflow: hidden; + padding: 0; + margin: 0; + height: 0; + opacity: 0; + transition: height 0.2s linear, padding 0.075s 0.075s linear, margin + 0.075s 0.075s linear, opacity 0.075s linear; +} + +.ebComponentList-group_expandable_collapsed>.ebComponentList-inner .ebComponentList-group_expandable_collapsed .ebComponentList-group-header, + .ebComponentList-group_expandable_collapsed>.ebComponentList-inner .ebComponentList-group_expandable_expanded .ebComponentList-group-header + { + overflow: hidden; + padding: 0; + margin: 0; + height: 0; + opacity: 0; + transition: height 0.2s linear, padding 0.075s 0.075s linear, margin + 0.075s 0.075s linear, opacity 0.075s linear; +} + +.ebComponentList-group_expandable_collapsed>.ebComponentList-inner .ebComponentList-group>.ebComponentList-inner + { + padding: 0; + margin: 0; + transition: padding 0.1s 0.1s linear, margin 0.1s 0.1s linear; +} + +.ebComponentList-group_expandable_expanded>.ebComponentList-group-header + { + border-bottom: 1px solid #999; +} + +.ebComponentList-group_expandable_expanded>.ebComponentList-inner>.ebComponentList-item + { + overflow: hidden; + height: 24px; + transition: height 0.2s linear, padding 0.075s linear, margin 0.075s + linear, opacity 0.15s 0.15s linear; +} + +.ebComponentList-group_expandable_expanded>.ebComponentList-inner>.ebComponentList-group_expandable_expanded>.ebComponentList-group-header, + .ebComponentList-group_expandable_expanded>.ebComponentList-inner>.ebComponentList-group_expandable_collapsed>.ebComponentList-group-header + { + overflow: hidden; + height: 24px; + text-overflow: ellipsis; + transition: height 0.2s linear, padding 0.075s linear, margin 0.075s + linear, opacity 0.15s 0.15s linear; +} + +.ebComponentList-group:not (.ebComponentList-group_expandable_collapsed + ):not (.ebComponentList-group_expandable_expanded ) >.ebComponentList-group-header + { + cursor: default !important; + pointer-events: none !important; + -ms-touch-action: none !important; + touch-action: none !important; + -khtml-user-select: none !important; + -moz-user-select: none !important; + -o-user-select: none !important; + -webkit-user-select: none !important; + user-select: none; +} + +.ebComponentList-group-header { + font-size: 1.2rem; + font-weight: bold; + line-height: 2.4rem; + border-bottom: 1px solid #999; + background-color: #ffffff; +} + +.ebComponentList-group-header_icon { + font-size: 0; +} + +.ebComponentList-group-header_icon>.ebComponentList-group-name { + width: calc(100% - 24px); +} + +.ebComponentList-group-name { + display: inline-block; + width: calc(100% - 16px); + font-size: 1.2rem; + line-height: 2.4rem; + font-weight: bold; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + vertical-align: middle; +} + +.ebComponentList-inner { + margin: 0 -0.8rem; + padding: 4px 0 0 0; +} + +.ebComponentList-link { + display: block; +} + +.ebComponentList-link:hover { + text-decoration: none; +} + +.ebComponentList-separator { + height: 1px; + margin: 0.4rem; + background-color: #E6E6E6; +} + +.ebComponentList_focus_forced .ebComponentList-item:hover { + background-color: transparent; +} + +.ebComponentList_focus_forced .ebComponentList-item_focused:hover { + background-color: #e6f0f7; +} + +.ebComponentList:not (.ebComponentList_focus_forced ) .ebComponentList-item:hover + { + background-color: #e6f0f7; +} + +.ebComponentList_focus_forced .ebComponentList-item:active, + .ebComponentList:not (.ebComponentList_focus_forced ) .ebComponentList-item:active + { + background-color: #cce0f0; +} + +.ebComponentList-item { + /* Fixes MultiSelectBox ellipsis bug in Firefox */ + margin: 0px !important; + font-size: 1em !important; +} + +.ebComponentList-item_focused { + background-color: #e6f0f7; +} + +.ebComponentList-item_disabled { + color: #b0b0af; + cursor: not-allowed !important; +} + +.ebComponentList-item_disabled:hover, .ebComponentList-item_disabled:active + { + background-color: inherit !important; +} + +.ebComponentList-item_selected { + position: relative; + cursor: default; +} + +.ebComponentList-item_selected>.ebComponentList-link { + cursor: default; + color: #333333; + cursor: default !important; + pointer-events: none !important; + -ms-touch-action: none !important; + touch-action: none !important; + -khtml-user-select: none !important; + -moz-user-select: none !important; + -o-user-select: none !important; + -webkit-user-select: none !important; + user-select: none; +} + +.ebComponentList-item_selected:before { + position: absolute; + content: ""; + left: 0; + top: 0; + bottom: 0; + width: 100%; + opacity: .2; + background-color: #0967b2; +} + +.ebComponentList-item>.ebComponentList-checkboxHolder>.ebCheckbox { + margin-left: 1px; +} + +.ebComponentList-item>.ebComponentList-checkboxHolder>.ebCheckbox-label + { + padding-left: 3px; + overflow: hidden; + font-size: 12px; + line-height: 2.4rem; + text-overflow: ellipsis; + width: calc(100% - 24px); +} + +.ebComponentList-info { + color: #333333; + font-style: italic; + text-align: center; +} + +.ebComponentList-info:hover { + background-color: #ffffff; +} + +.ebComponentList-info:active { + background-color: #ffffff; +} + +.ebComponentList-info, .ebComponentList-loader { + display: none; + margin: 0.6rem; + cursor: default; +} + +.ebComponentList_info .ebComponentList-group, .ebComponentList_info .ebComponentList-separator, + .ebComponentList_info .ebComponentList-item { + display: none; +} + +.ebComponentList_info .ebComponentList-info { + display: block; +} + +.ebComponentList_loading { + min-height: 34px; +} + +.ebComponentList_loading .ebComponentList-loader { + display: block; +} + +.ebComponentList_loading .ebComponentList-item_selected:before { + display: none; +} + +.ebComponentList_loading>.ebComponentList-group, + .ebComponentList_loading>.ebComponentList-item, + .ebComponentList_loading>.ebComponentList-items>.ebComponentList-group, + .ebComponentList_loading>.ebComponentList-items>.ebComponentList-item { + opacity: 0.4; +} + +/* Scrollbar */ +.eb_scrollbar { + -webkit-overflow-scrolling: touch; + overflow: auto; +} + +.eb_scrollbar::-webkit-scrollbar { + width: 14px; + height: 14px; +} + +.eb_scrollbar::-webkit-scrollbar-track { + background-color: #f0f0f0; + background-clip: content-box; +} + +.eb_scrollbar::-webkit-scrollbar-thumb { + background-color: #cccccc; + border-radius: 3px; + transition: all 0.2s linear; + background-clip: content-box; +} + +.eb_scrollbar::-webkit-scrollbar-thumb:hover { + background-color: #999999; +} + +.eb_scrollbar::-webkit-scrollbar-button { + width: 14px; + height: 14px; + background-repeat: no-repeat; + background-color: #f0f0f0; + background-position: center; +} + +.eb_scrollbar::-webkit-scrollbar-button:hover { + background-color: #cccccc; +} + +.eb_scrollbar::-webkit-scrollbar-button:vertical:decrement { + background-position: center 4px; + background-image: + url("data:image/svg+xml;utf8,"); + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +.eb_scrollbar::-webkit-scrollbar-button:vertical:increment { + background-image: + url("data:image/svg+xml;utf8,"); + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +.eb_scrollbar::-webkit-scrollbar-button:horizontal:decrement { + background-position: 4px center; + background-image: + url("data:image/svg+xml;utf8,"); + border-bottom-left-radius: 2px; + border-top-left-radius: 2px; +} + +.eb_scrollbar::-webkit-scrollbar-button:horizontal:increment { + background-image: + url("data:image/svg+xml;utf8,"); + border-bottom-right-radius: 2px; + border-top-right-radius: 2px; +} + +/* Input */ +.ebInput { + display: inline-block; + vertical-align: middle; + text-align: left; + font-size: 1.2rem; + width: 140px; + height: 2.4rem; + padding: 0.4rem 0.6rem; + border: 1px solid #b3b3b3; + -moz-box-sizing: border-box; + box-sizing: border-box; + border-radius: 3px; + box-shadow: inset 1px 1px 0 0 #cccccc; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.ebInput_wMargin { + margin: 6px; +} + +.ebInput_txtCenter { + text-align: center; +} + +.ebInput_miniW, .ebInput_width_mini { + width: 40px; +} + +.ebInput_smallW, .ebInput_width_small { + width: 80px; +} + +.ebInput_longW, .ebInput_width_long { + width: 180px; +} + +.ebInput_xLongW, .ebInput_width_xLong { + width: 220px; +} + +.ebInput_width_full { + min-width: 40px; + width: 100%; +} + +.ebInput_noRightSide { + border-width: 1px 0 1px 1px; + border-radius: 3px 0 0 3px; +} + +.ebInput_noLeftSide { + border-width: 1px 1px 1px 0; + border-radius: 0 3px 3px 0; + box-shadow: inset 0 1px 0 0 #cccccc; +} + +.ebInput:hover { + border-color: #666666; +} + +.ebInput[readonly] { + cursor: text; // + box-shadow: none; + border-color: #E3E3E3; + background-color: #f0f0f0; + color: #b2b2b2; +} + +.ebInput[readonly]:hover { // + border-color: #E3E3E3; +} + +.ebInput_disabled, .ebInput:disabled { + color: #B2B2B2; + border-color: #B2B2B2; + background-color: rgba(0, 0, 0, 0.05); + -webkit-text-fill-color: #b2b2b2; + opacity: 1; + -ms-touch-action: none !important; + touch-action: none !important; + box-shadow: inset 1px 1px 0 0 #cccccc; +} + +.ebInput_borderColor { + border-color: #b3b3b3; +} + +.ebInput_borderColor_red { + border-color: #e32119; +} + +.ebInput_status_none { + border-color: #b3b3b3; +} + +.ebInput_status_warning { + border-color: #f08a00; +} + +.ebInput_status_error { + border-color: #e32119; +} + +.ebInput.eb_wMargin+.ebInput-status { + margin: -0.2rem 0.8rem 0 0.6rem; +} + +.ebInput-status { + display: block; + margin: 0.4rem 0 0 0; + line-height: 1.2rem; + min-height: 1.8rem; + font-size: 1.2rem; + font-weight: normal; +} + +.ebInput-statusOk, .ebInput-statusError { + vertical-align: middle; +} + +.ebInput-statusOk:before, .ebInput-statusError:before { + display: inline-block; + vertical-align: middle; + margin: 0 0.6rem 0 0; + width: 1.2rem; + height: 1.2rem; + content: ''; + background-repeat: no-repeat; +} + +.ebInput-statusInfo { + vertical-align: middle; + color: #8d8d8d; +} + +.ebInput-statusOk { + color: #89ba17; + display: none; +} + +.ebInput-statusOk:before { + background-image: url('../resources/form/valid_icon.svg'); +} + +.ebInput-statusError { + color: #e32119; + display: none; +} + +.ebInput-statusError:before { + background-image: url('../resources/form/invalid_icon.svg'); +} + +.ebInput-status_none { + display: none; +} + +.ebInput-status_hide .ebInput-statusOk, .ebInput-status_hide .ebInput-statusError, + .ebInput-status_hide .ebInput-statusInfo { + display: none; +} + +.ebInput-status_info .ebInput-statusInfo { + display: inline-block; +} + +.ebInput-status_info .ebInput-statusOk, .ebInput-status_info .ebInput-statusError + { + display: none; +} + +.ebInput-status_ok .ebInput-statusOk { + display: inline-block; +} + +.ebInput-status_ok .ebInput-statusError, .ebInput-status_ok .ebInput-statusInfo + { + display: none; +} + +.ebInput-status_error .ebInput-statusError { + display: inline-block; +} + +.ebInput-status_error .ebInput-statusOk, .ebInput-status_error .ebInput-statusInfo + { + display: none; +} + +.ebInput:not (.ebInput_validation_focusLost ):valid+.ebInput-status:not + (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok + ):not (.ebInput-status_error ) .ebInput-statusOk { + display: inline-block; +} + +.ebInput:not (.ebInput_validation_focusLost ):invalid:not (.ebInput_borderColor + ):not (.ebInput_status_warning ):not (.ebInput_status_none ) { + border-color: #e32119; +} + +.ebInput:not (.ebInput_validation_focusLost ):invalid+.ebInput-status:not + (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok + ):not (.ebInput-status_error ) .ebInput-statusError { + display: inline-block; +} + +.ebInput:not (.ebInput_validation_focusLost ):invalid+.ebInput-status:not + (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok + ):not (.ebInput-status_error ) .ebInput-statusInfo { + display: none; +} + +.ebInput.ebInput_validation_focusLost:not (:focus ):valid+.ebInput-status:not + (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok + ):not (.ebInput-status_error ) .ebInput-statusOk { + display: inline-block; +} + +.ebInput.ebInput_validation_focusLost:not (:focus ):invalid:not (.ebInput_borderColor + ):not (.ebInput_status_warning ):not (.ebInput_status_none ) { + border-color: #e32119; +} + +.ebInput.ebInput_validation_focusLost:not (:focus ):invalid+.ebInput-status:not + (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok + ):not (.ebInput-status_error ) .ebInput-statusError { + display: inline-block; +} + +.ebInput.ebInput_validation_focusLost:not (:focus ):invalid+.ebInput-status:not + (.ebInput-status_hide ):not (.ebInput-status_info ):not (.ebInput-status_ok + ):not (.ebInput-status_error ) .ebInput-statusInfo { + display: none; +} + +/* Textarea */ +.ebTextArea { + -webkit-overflow-scrolling: touch; + overflow: auto; + display: inline-block; + vertical-align: middle; + text-align: left; + font-size: 1.2rem; + width: 140px; + padding: 0.4rem 0.6rem; + margin: 0; + border: 1px solid #b3b3b3; + font-family: arial; + -moz-box-sizing: border-box; + box-sizing: border-box; + border-radius: 3px; + box-shadow: inset 1px 1px 0 0 #cccccc; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.ebTextArea::-webkit-scrollbar { + width: 14px; + height: 14px; +} + +.ebTextArea::-webkit-scrollbar-track { + background-color: #f0f0f0; + background-clip: content-box; +} + +.ebTextArea::-webkit-scrollbar-thumb { + background-color: #cccccc; + border-radius: 3px; + transition: all 0.2s linear; + background-clip: content-box; +} + +.ebTextArea::-webkit-scrollbar-thumb:hover { + background-color: #999999; +} + +.ebTextArea::-webkit-scrollbar-button { + width: 14px; + height: 14px; + background-repeat: no-repeat; + background-color: #f0f0f0; + background-position: center; +} + +.ebTextArea::-webkit-scrollbar-button:hover { + background-color: #cccccc; +} + +.ebTextArea::-webkit-scrollbar-button:vertical:decrement { + background-position: center 4px; + background-image: + url("data:image/svg+xml;utf8,"); + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +.ebTextArea::-webkit-scrollbar-button:vertical:increment { + background-image: + url("data:image/svg+xml;utf8,"); + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +.ebTextArea::-webkit-scrollbar-button:horizontal:decrement { + background-position: 4px center; + background-image: + url("data:image/svg+xml;utf8,"); + border-bottom-left-radius: 2px; + border-top-left-radius: 2px; +} + +.ebTextArea::-webkit-scrollbar-button:horizontal:increment { + background-image: + url("data:image/svg+xml;utf8,"); + border-bottom-right-radius: 2px; + border-top-right-radius: 2px; +} + +.ebTextArea_noMargin { + margin: 0; +} + +.ebTextArea_txtCenter { + text-align: center; +} + +.ebTextArea_miniW, .ebTextArea_width_mini { + width: 40px; +} + +.ebTextArea_smallW, .ebTextArea_width_small { + width: 80px; +} + +.ebTextArea_longW, .ebTextArea_width_long { + width: 180px; +} + +.ebTextArea_xLongW, .ebTextArea_width_xLong { + width: 220px; +} + +.ebTextArea_width_full { + min-width: 40px; + width: 100%; +} + +.ebTextArea_noRightSide { + border-width: 1px 0 1px 1px; + border-radius: 3px 0 0 3px; +} + +.ebTextArea_noLeftSide { + border-width: 1px 1px 1px 0; + border-radius: 0 3px 3px 0; +} + +.ebTextArea:hover { + border-color: #666666; +} + +.ebTextArea[readonly] { + cursor: text; + border-color: #E3E3E3; + background-color: #f0f0f0; + color: #b2b2b2; +} + +.ebTextArea[readonly]:hover { // + border-color: #E3E3E3; +} + +.ebTextArea_disabled, .ebTextArea:disabled { + color: #B2B2B2; + border-color: #B2B2B2; + background-color: rgba(0, 0, 0, 0.05); + -ms-touch-action: none; + touch-action: none; + -webkit-text-fill-color: #b2b2b2; + opacity: 1; + box-shadow: inset 1px 1px 0 0 #cccccc; +} + +.ebTextArea_status_none { + border-color: #b3b3b3; +} + +.ebTextArea_status_warning { + border-color: #f08a00; +} + +.ebTextArea_status_error { + border-color: #e32119; +} + +.ebTextArea:invalid:not (.ebTextArea_status_warning ):not (.ebTextArea_status_none + ) { + border-color: #e32119; +} + +/* Button */ +.ebBtn { + position: relative; + display: inline-block; + vertical-align: middle; + color: #333333; + background-color: #ffffff; + border: none; + min-width: 60px; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); + border-radius: 3px; + -moz-box-sizing: border-box; + box-sizing: border-box; + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.1) 100%); + padding: 0 8px; + height: 2.4rem; + font-size: 1.2rem; + white-space: nowrap; + text-decoration: none; + text-align: center; + cursor: pointer; +} + +a.ebBtn:hover { + color: #333; +} + +a.ebBtn:focus, a.ebBtn:active, a.ebBtn_active { + text-decoration: none; +} + +.ebBtn:focus { + outline: none; + box-shadow: 0 0 2px 1px #4d90fe, 0 0 0 1px rgba(0, 0, 0, 0.2) inset; +} + +.ebBtn_color_blue, .ebBtn_color_darkBlue, .ebBtn_color_paleBlue, + .ebBtn_color_darkGreen, .ebBtn_color_green, .ebBtn_color_orange, + .ebBtn_color_red, .ebBtn_color_purple { + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.3) 100%); + color: #F0F0F0 !important; +} + +.ebBtn_color_blue:hover, .ebBtn_color_darkBlue:hover, + .ebBtn_color_paleBlue:hover, .ebBtn_color_darkGreen:hover, + .ebBtn_color_green:hover, .ebBtn_color_orange:hover, .ebBtn_color_red:hover, + .ebBtn_color_purple:hover { + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.1) 100%); +} + +.ebBtn_color_blue { + background-color: #0966b3; +} + +.ebBtn_color_darkBlue { + background-color: #0066b3; +} + +.ebBtn_color_paleBlue { + background-color: #00A9D4; +} + +.ebBtn_color_darkGreen { + background-color: #00625F; +} + +.ebBtn_color_green { + background-color: #89BA17; +} + +.ebBtn_color_orange { + background-color: #F08A00; +} + +.ebBtn_color_red { + background-color: #E32119; +} + +.ebBtn_color_purple { + background-color: #953882; +} + +.ebBtn_small { + font-size: 1.1rem; + padding: 0 6px; + height: 2rem; +} + +.ebBtn_large { + font-size: 1.4rem; + padding: 0 10px; + height: 3.8rem; +} + +.ebBtn:hover { + text-decoration: none; + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.15) 100%); +} + +.ebBtn_active, .ebBtn:active, .ebBtn_active:hover { + text-decoration: none; + box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px + rgba(0, 0, 0, 0.2); + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, + rgba(0, 0, 0, 0.2) 100%); +} + +.ebBtn:disabled, .ebBtn_disabled, .ebBtn:disabled:hover, .ebBtn_disabled:hover, + .ebBtn:disabled:active, .ebBtn_disabled:active { + -ms-touch-action: none !important; + cursor: not-allowed !important; + touch-action: none !important; + background: rgba(0, 0, 0, 0.1); + color: #8d8d8d !important; +} + +.ebBtn:disabled .ebIcon, .ebBtn_disabled .ebIcon { + opacity: 0.3; +} + +.ebBtn_subtle { + background-image: none; + background-color: transparent; + box-shadow: none; + min-width: auto; +} + +.ebBtn_subtle:hover { + background-image: none; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); +} + +.ebBtn_subtle:focus { + box-shadow: 0 0 2px 1px #4d90fe, 0 0 0 1px rgba(0, 0, 0, 0.2) inset; +} + +.ebBtn_subtle:active, .ebBtn_subtle.ebBtn_subtle_active { + text-decoration: none; + box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px + rgba(0, 0, 0, 0.2); + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, + rgba(0, 0, 0, 0.2) 100%); +} + +.ebBtn_subtle:disabled, .ebBtn_subtle.ebBtn_subtle_disabled, + .ebBtn_subtle:disabled:hover, .ebBtn_subtle.ebBtn_subtle_disabled:hover, + .ebBtn_subtle:disabled:active, .ebBtn_subtle.ebBtn_subtle_disabled:active + { + background-color: transparent; + box-shadow: none; +} + +.ebBtn:active:focus, .ebBtn_active:focus { + box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px + rgba(0, 0, 0, 0.2), 0 0 2px 1px #4d90fe; + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, + rgba(0, 0, 0, 0.2) 100%); +} + +/* Combobox */ +.ebCombobox { + position: relative; + display: inline-block; + vertical-align: middle; + white-space: nowrap; + margin: 0; + padding: 0; + height: 2.4rem; +} + +.ebCombobox_width_full { + min-width: 70px; + width: 100%; +} + +.ebCombobox_width_full .ebInput { + width: calc(100% - 30px); +} + +.ebCombobox-list, .ebCombobox-body { + position: absolute; + margin-top: 6px; + display: none; + width: 100%; +} + +.ebCombobox-list_rightAlign, .ebCombobox-body_rightAlign { + right: 0; +} + +.ebCombobox-Helper, .ebCombobox-helper { + position: relative; + display: inline-block; + vertical-align: middle; + width: 30px; + /*height: 100%; ewwatkmi: replaced with 2.4rem below*/ + height: 2.4rem; + cursor: pointer; + border: 1px solid #999999; + background-color: #ffffff; + -moz-box-sizing: border-box; + box-sizing: border-box; + border-radius: 0 3px 3px 0; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.1) 100%); +} + +.ebCombobox-Helper:hover, .ebCombobox-helper:hover { + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.15) 100%); +} + +.ebCombobox-Helper:active, .ebCombobox-helper:active { + box-shadow: inset 2px 2px 3px 0 rgba(0, 0, 0, 0.35); + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, + rgba(0, 0, 0, 0.2) 100%); +} + +.ebCombobox-Helper:disabled, .ebCombobox-helper:disabled { + border-color: #b2b2b2; +} + +.ebCombobox-Helper:disabled, .ebCombobox-helper:disabled, + .ebCombobox-Helper:disabled:hover, .ebCombobox-helper:disabled:hover, + .ebCombobox-Helper:disabled:active, .ebCombobox-helper:disabled:active + { + -ms-touch-action: none !important; + cursor: not-allowed !important; + touch-action: none !important; + background: #e5e5e5; + color: #B2B2B2; + cursor: not-allowed; + box-shadow: none; +} + +.ebCombobox-Helper .ebCombobox-iconHolder, .ebCombobox-helper .ebCombobox-iconHolder + { + display: inline-block; + opacity: 0.7; + cursor: pointer; + line-height: 2.2rem; +} + +.ebCombobox-Helper .ebCombobox-iconHolder .ebIcon, .ebCombobox-helper .ebCombobox-iconHolder .ebIcon + { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; +} + +.ebCombobox:hover>.ebCombobox-Helper, .ebCombobox:hover>.ebCombobox-helper + { + border-color: #666666; +} + +.ebCombobox + +.ebInput +:focus + +~ +.ebCombobox-list +, /*.ebCombobox .ebInput:focus ~ .ebCombobox-body,*/ +.ebCombobox +:active +> +.ebCombobox-list +, /*.ebCombobox:active > .ebCombobox-body*/ +{ +display +: + +block +; + + +} +.ebCombobox>.ebCombobox-list, .ebCombobox>.ebCombobox-body { + display: none; +} + +.ebCombobox_noMargin { + margin: 0; +} + +.ebCombobox_disabled, .ebCombobox_disabled *:hover { + -ms-touch-action: none !important; + cursor: not-allowed !important; + touch-action: none !important; +} + +.ebCombobox_disabled .ebCombobox-iconHolder, .ebCombobox_disabled .ebCombobox-iconHolder:hover, + .ebCombobox_disabled .ebCombobox-iconHolder:active { + -ms-touch-action: none !important; + cursor: not-allowed !important; + touch-action: none !important; + opacity: 0.3; +} + +.ebCombobox_disabled:hover>.ebCombobox-Helper, .ebCombobox_disabled:hover>.ebCombobox-helper + { + border-color: #b2b2b2; +} + +.ebCombobox_disabled:active>.ebCombobox-list, .ebCombobox_disabled:active>.ebCombobox-body + { + display: none; +} + +.ebCombobox_disabled .ebInput:focus ~ .ebCombobox-list, + .ebCombobox_disabled .ebInput:focus ~ .ebCombobox-body { + display: none; +} + +.ebCombobox_status_warning .ebInput { + border-color: #f08a00; +} + +.ebCombobox_status_error .ebInput { + border-color: #e32119; +} + +/* Switcher */ +.ebSwitcher { + position: relative; + height: 24px; + width: 84px; + display: block; + overflow: hidden; + cursor: pointer; + border: 1px solid #ccc; + border-radius: 3px; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + -webkit-user-select: none; + user-select: none; +} + +.ebSwitcher-checkbox { + display: none; +} + +.ebSwitcher-body { + position: relative; + font-size: 0; + white-space: nowrap; + top: 0; + left: 0; + width: 100%; + height: 100%; + transition: left 0.2s linear; +} + +.ebSwitcher-onLabel, .ebSwitcher-switch, .ebSwitcher-offLabel { + display: inline-block; + vertical-align: top; + overflow: hidden; + height: 100%; +} + +.ebSwitcher-onLabel, .ebSwitcher-offLabel { + width: calc(100% - 24px); + line-height: 2.4rem; + color: white; + text-align: center; + font-size: 1.2rem; +} + +.ebSwitcher-onLabel { + background-color: red; +} + +.ebSwitcher-onLabel2 { + background-color: #89ba17; +} + +.ebSwitcher-offLabel { + background-color: #89ba17; +} + +.ebSwitcher-offLabel2 { + background-color: red; +} + +.ebSwitcher-switch { + height: 24px; + width: 24px; + transition: left 0.2s; +} + +.ebSwitcher-switch::after { + content: ""; + position: absolute; + margin: -1px; + width: 24px; + height: 24px; + display: inline-block; + background: #ffffff; + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.1) 100%); + border-radius: 3px; + border: 1px solid rgba(0, 0, 0, 0.2); +} + +.ebSwitcher-checkbox:not (:checked ) +.ebSwitcher-body { + left: calc(-100% + 24px); +} + +.ebSwitcher:focus { + /* + outline: #4d90fe auto 5px; + box-shadow: 0 0 0 1px #4d90fe; + -webkit-box-shadow: none; + */ + outline: none; + box-shadow: 0 0 2px 1px #4d90fe; +} + +.ebSwitcher_status_warning { + border-color: #f08a00; +} + +.ebSwitcher_status_error { + border-color: #e32119; +} + +.ebSwitcher_disabled { + cursor: not-allowed; +} + +.ebSwitcher_disabled .ebSwitcher-onLabel, .ebSwitcher_disabled .ebSwitcher-offLabel, + .ebSwitcher_disabled .ebSwitcher-switch::after { + background-color: #e5e5e5; + background-image: none; + color: #8d8d8d; +} + +/* Dropdown */ +.ebDropdown { + position: relative; + display: inline-block; + height: 2.4rem; + padding: 0; + margin: 0; +} + +.ebDropdown-list, .ebDropdown-body { + position: absolute; + margin-top: 6px; + display: none; + min-width: 100%; +} + +.ebDropdown-list_rightAlign, .ebDropdown-body_rightAlign { + right: 0; +} + +.ebDropdown-Header, .ebDropdown-header { + position: relative; + display: inline-block; + vertical-align: middle; + height: 100%; + min-width: 60px; + margin: 0; + padding: 6px 8px; + line-height: 1.2rem; + font-size: 1.2rem; + text-align: left; + text-decoration: none; + white-space: nowrap; + color: #333333; + background-color: #ffffff; + border: none; + cursor: pointer; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); + border-radius: 3px; + -moz-box-sizing: border-box; + box-sizing: border-box; + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.1) 100%); +} + +.ebDropdown-Header:hover, .ebDropdown-header:hover { + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0.15) 100%); +} + +.ebDropdown-Header:active, .ebDropdown-header:active { + box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px + rgba(0, 0, 0, 0.2); + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, + rgba(0, 0, 0, 0.2) 100%); +} + +.ebDropdown-Header .ebDropdown-caption, .ebDropdown-header .ebDropdown-caption + { + display: inline-block; + padding: 0 4px 0 0; + vertical-align: middle; + min-width: 27px; +} + +.ebDropdown-Header .ebDropdown-iconHolder, .ebDropdown-header .ebDropdown-iconHolder + { + display: inline-block; + cursor: pointer; + opacity: 0.7; +} + +.ebDropdown .ebDropdown-Header:focus+.ebDropdown-list, .ebDropdown .ebDropdown-header:focus+.ebDropdown-body, + .ebDropdown .ebDropdown-Header:active+.ebDropdown-list, .ebDropdown .ebDropdown-header:active+.ebDropdown-body, + .ebDropdown:focus>.ebDropdown-list, .ebDropdown:focus>.ebDropdown-body, + .ebDropdown:active>.ebDropdown-list, .ebDropdown:active>.ebDropdown-body + { + display: block; +} + +.ebDropdown_disabled .ebDropdown-Header, .ebDropdown_disabled .ebDropdown-header + { + background: rgba(0, 0, 0, 0.1); + color: #B2B2B2; +} + +.ebDropdown_disabled .ebDropdown-Header, .ebDropdown_disabled .ebDropdown-header, + .ebDropdown_disabled .ebDropdown-Header:hover, .ebDropdown_disabled .ebDropdown-header:hover, + .ebDropdown_disabled .ebDropdown-Header:active, .ebDropdown_disabled .ebDropdown-header:active + { + -ms-touch-action: none !important; + cursor: not-allowed !important; + touch-action: none !important; +} + +.ebDropdown_disabled .ebDropdown-Header:hover, .ebDropdown_disabled .ebDropdown-header:hover, + .ebDropdown_disabled .ebDropdown-Header:active, .ebDropdown_disabled .ebDropdown-header:active + { + background: rgba(0, 0, 0, 0.1); + color: #B2B2B2; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); +} + +.ebDropdown_disabled .ebDropdown-Header .ebDropdown-iconHolder, + .ebDropdown_disabled .ebDropdown-header .ebDropdown-iconHolder, + .ebDropdown_disabled .ebDropdown-Header .ebDropdown-iconHolder:hover, + .ebDropdown_disabled .ebDropdown-header .ebDropdown-iconHolder:hover, + .ebDropdown_disabled .ebDropdown-Header .ebDropdown-iconHolder:active, + .ebDropdown_disabled .ebDropdown-header .ebDropdown-iconHolder:active { + -ms-touch-action: none !important; + cursor: not-allowed !important; + touch-action: none !important; + opacity: 0.3; +} + +.ebDropdown_disabled .ebDropdown-Header:focus+.ebDropdown-list, + .ebDropdown_disabled .ebDropdown-header:focus+.ebDropdown-body, + .ebDropdown_disabled .ebDropdown-Header:active+.ebDropdown-list, + .ebDropdown_disabled .ebDropdown-header:active+.ebDropdown-body, + .ebDropdown_disabled:focus>.ebDropdown-list, .ebDropdown_disabled:focus>.ebDropdown-body, + .ebDropdown_disabled:active>.ebDropdown-list, .ebDropdown_disabled:active>.ebDropdown-body + { + display: none; +} + +/* Icons */ +.ebIcon { + display: inline-block; + vertical-align: middle; + border: none; + height: 16px; + width: 16px; + line-height: 1.6rem; + background-repeat: no-repeat; + background-position: center; + background-color: transparent; + background-size: 100%; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + -webkit-user-select: none; + user-select: none; + /*small icons */ + /*16px icons*/ +} + +.ebIcon_interactive { + opacity: 0.7; + cursor: pointer; +} + +.ebIcon_interactive:hover { + opacity: 1.0; +} + +.ebIcon_interactive:active { + opacity: 0.4; +} + +.ebIcon_button { + margin: 10px; +} + +.ebIcon_noVertAlign { + vertical-align: inherit; +} + +.ebIcon_disabled { + cursor: default; +} + +.ebIcon_disabled, .ebIcon_disabled:hover, .ebIcon_disabled:active { + opacity: 0.3; +} + +.ebIcon_small { + width: 1rem; + height: 1rem; + line-height: 1rem; +} + +.ebIcon_big { + width: 2rem; + height: 2rem; + line-height: 2rem; +} + +.ebIcon_large { + width: 2.8rem; + height: 2.8rem; + line-height: 2.8rem; +} + +.ebIcon_wMargin { + margin: 4px; +} + +.ebIcon_upArrow { + background-image: url('../resources/16px/ArrowUpSmall_black_16px.svg'); +} + +.ebIcon_upArrow_white { + background-image: url('../resources/16px/arrowUpSmall_white_16px.svg'); +} + +.ebIcon_downArrow { + background-image: url('../resources/16px/ArrowDownSmall_black_16px.svg'); +} + +.ebIcon_downArrow_white { + background-image: url('../resources/16px/ArrowDownSmall_white_16px.svg'); +} + +.ebIcon_leftArrow { + background-image: url('../resources/16px/ArrowLeftSmall_black_16px.svg'); +} + +.ebIcon_leftArrow_white { + background-image: url('../resources/16px/ArrowLeftSmall_white_16px.svg'); +} + +.ebIcon_rightArrow { + background-image: + url('../resources/16px/ArrowRightSmall_black_16px.svg'); +} + +.ebIcon_rightArrow_white { + background-image: + url('../resources/16px/ArrowRightSmall_white_16px.svg'); +} + +.ebIcon_prevArrow { + background-image: + url('../resources/16px/ArrowDoubleLeftSmall_black_16px.svg'); +} + +.ebIcon_nextArrow { + background-image: + url('../resources/16px/ArrowDoubleRightSmall_black_16px.svg'); +} + +.ebIcon_upArrow_10px { + background-image: url('../resources/10px/ArrowUpSmall_black_10px.svg'); +} + +.ebIcon_downArrow_10px { + background-image: url('../resources/10px/ArrowDownSmall_black_10px.svg'); +} + +.ebIcon_leftArrow_10px { + background-image: url('../resources/10px/ArrowLeftSmall_black_10px.svg'); +} + +.ebIcon_rightArrow_10px { + background-image: + url('../resources/10px/ArrowRightSmall_black_10px.svg'); +} + +.ebIcon_prevArrow_10px { + background-image: + url('../resources/10px/ArrowDoubleLeftSmall_black_10px.svg'); +} + +.ebIcon_nextArrow_10px { + background-image: + url('../resources/10px/ArrowDoubleRightSmall_black_10px.svg'); +} + +.ebIcon_errorSmall { + background-image: url('../resources/other/errorSmall_red_10px.svg'); +} + +.ebIcon_tickSmallBlack { + background-image: url('../resources/other/tick_black_10x8px.svg'); +} + +.ebIcon_tickSmallGreen { + background-image: url('../resources/other/tick_green_10x8px.svg'); +} + +.ebIcon_upArrowLarge { + background-image: url('../resources/16px/ArrowUp_black_16px.svg'); +} + +.ebIcon_upArrowLarge_white { + background-image: url('../resources/16px/ArrowUp_white_16px.svg'); +} + +.ebIcon_downArrowLarge { + background-image: url('../resources/16px/ArrowDown_black_16px.svg'); +} + +.ebIcon_downArrowLarge_white { + background-image: url('../resources/16px/ArrowDown_white_16px.svg'); +} + +.ebIcon_downArrowLarge_blue { + background-image: url('../resources/16px/ArrowDown_blue_16px.svg'); +} + +.ebIcon_leftArrowLarge { + background-image: url('../resources/16px/ArrowLeft_black_16px.svg'); +} + +.ebIcon_leftArrowLarge_white { + background-image: url('../resources/16px/ArrowLeft_white_16px.svg'); +} + +.ebIcon_rightArrowLarge { + background-image: url('../resources/16px/ArrowRight_black_16px.svg'); +} + +.ebIcon_rightArrowLarge_white { + background-image: url('../resources/16px/ArrowRight_white_16px.svg'); +} + +.ebIcon_circleArrowDown { + background-image: + url('../resources/16px/circleArrowDown_black_16px.svg'); +} + +.ebIcon_circleArrowDown_white { + background-image: + url('../resources/16px/circleArrowDown_white_16px.svg'); +} + +.ebIcon_circleArrowLeft { + background-image: + url('../resources/16px/circleArrowLeft_black_16px.svg'); +} + +.ebIcon_circleArrowLeft_white { + background-image: + url('../resources/16px/circleArrowLeft_white_16px.svg'); +} + +.ebIcon_circleArrowRight { + background-image: + url('../resources/16px/circleArrowRight_black_16px.svg'); +} + +.ebIcon_circleArrowRight_white { + background-image: + url('../resources/16px/circleArrowRight_white_16px.svg'); +} + +.ebIcon_circleArrowUp { + background-image: url('../resources/16px/circleArrowUp_black_16px.svg'); +} + +.ebIcon_circleArrowUp_white { + background-image: url('../resources/16px/circleArrowUp_white_16px.svg'); +} + +.ebIcon_circleCaretDown { + background-image: + url('../resources/16px/circleCaretDown_black_16px.svg'); +} + +.ebIcon_circleCaretDown_white { + background-image: + url('../resources/16px/circleCaretDown_white_16px.svg'); +} + +.ebIcon_circleCaretLeft { + background-image: + url('../resources/16px/circleCaretLeft_black_16px.svg'); +} + +.ebIcon_circleCaretLeft_white { + background-image: + url('../resources/16px/circleCaretLeft_white_16px.svg'); +} + +.ebIcon_circleCaretRight { + background-image: + url('../resources/16px/circleCaretRight_black_16px.svg'); +} + +.ebIcon_circleCaretRight_white { + background-image: + url('../resources/16px/circleCaretRight_white_16px.svg'); +} + +.ebIcon_circleCaretUp { + background-image: url('../resources/16px/circleCaretUp_black_16px.svg'); +} + +.ebIcon_circleCaretUp_white { + background-image: url('../resources/16px/circleCaretUp_white_16px.svg'); +} + +.ebIcon_eLogo { + background-image: url('../resources/systemBar/econ01.svg'); +} + +.ebIcon_comment { + background-image: url('../resources/16px/Comment_black_16px.svg'); +} + +.ebIcon_comment_white { + background-image: url('../resources/16px/comment_white.svg'); +} + +.ebIcon_copy { + background-image: url('../resources/16px/copy_black_16px.svg'); +} + +.ebIcon_copy_white { + background-image: url('../resources/16px/copy_white_16px.svg'); +} + +.ebIcon_cut { + background-image: url('../resources/16px/cut_black.svg'); +} + +.ebIcon_cut_white { + background-image: url('../resources/16px/cut_white.svg'); +} + +.ebIcon_delete { + background-image: url('../resources/16px/delete_black_16px.svg'); +} + +.ebIcon_delete_white { + background-image: url('../resources/16px/delete_white_16px.svg'); +} + +.ebIcon_duplicate { + background-image: url('../resources/16px/duplicate_black_16px.svg'); +} + +.ebIcon_duplicate_white { + background-image: url('../resources/16px/duplicate_white_16px.svg'); +} + +.ebIcon_edit { + background-image: url('../resources/16px/edit_black_16px.svg'); +} + +.ebIcon_editWhite { + background-image: url('../resources/16px/edit_white_16px.svg'); +} + +.ebIcon_newFile { + background-image: url('../resources/16px/newFile_black_16px.svg'); +} + +.ebIcon_newFile_white { + background-image: url('../resources/16px/newFile_white_16px.svg'); +} + +.ebIcon_save { + background-image: url('../resources/16px/save_black_16px.svg'); +} + +.ebIcon_save_white { + background-size: contain; + background-image: url('../resources/16px/save_white.svg'); +} + +.ebIcon_filter { + background-image: url('../resources/16px/filter_black_16px.svg'); +} + +.ebIcon_filterOn { + background-image: url('../resources/16px/filters_on.svg'); +} + +.ebIcon_filterOff { + background-image: url('../resources/16px/filters_off.svg'); +} + +.ebIcon_filter_white { + background-image: url('../resources/16px/filter_white_16px.svg'); +} + +.ebIcon_folder { + background-image: url('../resources/16px/folder_black_16px.svg'); +} + +.ebIcon_folder_white { + background-image: url('../resources/16px/folder_white_16px.svg'); +} + +.ebIcon_folderClosed { + background-image: url('../resources/16px/folderClosed_black.svg'); +} + +.ebIcon_folderClosed_white { + background-image: url('../resources/16px/folderClosed_white.svg'); +} + +.ebIcon_detach { + background-image: url('../resources/16px/detach_black_16px.svg'); +} + +.ebIcon_detach_white { + background-size: contain; + background-image: url('../resources/16px/detach_white.svg'); +} + +.ebIcon_import { + background-image: url('../resources/16px/import_black.svg'); +} + +.ebIcon_import_white { + background-image: url('../resources/16px/import_white.svg'); +} + +.ebIcon_export { + background-image: url('../resources/16px/export_black_16px.svg'); +} + +.ebIcon_export_white { + background-image: url('../resources/16px/export_white.svg'); +} + +.ebIcon_undo { + background-image: url('../resources/16px/undo_black_16px.svg'); +} + +.ebIcon_undo_white { + background-image: url('../resources/16px/undo_white_16px.svg'); +} + +.ebIcon_cancelled { + background-image: url('../resources/16px/Cancelled_Black_16px.svg'); +} + +.ebIcon_draft { + background-size: contain; + background-image: url('../resources/16px/draft.svg'); +} + +.ebIcon_importExport { + background-image: url('../resources/16px/import_export.svg'); +} + +.ebIcon_login { + background-image: url('../resources/16px/login.svg'); +} + +.ebIcon_move { + background-image: url('../resources/16px/move.svg'); +} + +.ebIcon_remove { + background-image: url('../resources/16px/remove.svg'); +} + +.ebIcon_valid { + background-image: url('../resources/16px/valid_icon.svg'); +} + +.ebIcon_invalid { + background-image: url('../resources/16px/invalid_icon.svg'); +} + +.ebIcon_error { + background-image: url('../resources/16px/error_red_16px.svg'); +} + +.ebIcon_warning { + background-image: url('../resources/16px/warning_yellow_16px.svg'); +} + +.ebIcon_warningOrange { + background-image: url('../resources/16px/warning_orange_16px.svg'); +} + +.ebIcon_warning_white { + background-image: url('../resources/16px/warning_white.svg'); +} + +.ebIcon_warningShield { + background-image: url('../resources/16px/warningShield_black_16px.svg'); +} + +.ebIcon_warningShield_white { + background-size: contain; + background-image: url('../resources/16px/warningShield_white.svg'); +} + +.ebIcon_mail { + background-image: url('../resources/16px/mail_black_16px.svg'); +} + +.ebIcon_mail_white { + background-image: url('../resources/16px/mail_white_16px.svg'); +} + +.ebIcon_mailRead { + background-image: url('../resources/16px/mailRead_black_16px.svg'); +} + +.ebIcon_mailRead_white { + background-image: url('../resources/16px/mailRead_white_16px.svg'); +} + +.ebIcon_link { + background-image: url('../resources/16px/Link_black_16px.svg');; +} + +.ebIcon_lock { + background-image: url('../resources/16px/lock_black_16px.svg'); +} + +.ebIcon_lock_white { + background-image: url('../resources/16px/lock_white_16px.svg'); +} + +.ebIcon_unlock { + background-image: url('../resources/16px/unlock_black_16px.svg'); +} + +.ebIcon_unlock_white { + background-image: url('../resources/16px/unlock_white_16px.svg'); +} + +.ebIcon_logout { + background-image: url('../resources/16px/logout_black_16px.svg'); +} + +.ebIcon_menu { + background-image: url('../resources/16px/menu_black_16px.svg'); +} + +.ebIcon_menu_white { + background-image: url('../resources/16px/menu_white_16px.svg'); +} + +.ebIcon_search { + background-image: url('../resources/16px/search_black_16px.svg'); +} + +.ebIcon_searchWhite { + background-image: url('../resources/16px/search_white_16px.svg'); +} + +.ebIcon_advancedSearch { + background-image: + url('../resources/16px/advanced_search_black_16px.svg'); +} + +.ebIcon_advancedSearchWhite { + background-image: + url('../resources/16px/advanced_search_white_16px.svg'); +} + +.ebIcon_share { + background-image: url('../resources/16px/share_black_16px.svg'); +} + +.ebIcon_share_white { + background-image: url('../resources/16px/share_white.svg'); +} + +.ebIcon_star { + background-image: url('../resources/16px/star_black_16px.svg'); +} + +.ebIcon_star_white { + background-image: url('../resources/16px/star_white_16px.svg'); +} + +.ebIcon_star_yellow { + background-image: url('../resources/16px/star_yellow_16px.svg'); +} + +.ebIcon_starOutline { + background-image: url('../resources/16px/star_outline_black_16px.svg'); +} + +.ebIcon_starOutline_white { + background-image: url('../resources/16px/star_outline_white_16px.svg'); +} + +.ebIcon_starOutline_yellow { + background-image: url('../resources/16px/star_outline_yellow_16px.svg'); +} + +.ebIcon_tick { + background-image: url('../resources/16px/tick_green_16px.svg'); +} + +.ebIcon_tick_black { + background-image: url('../resources/16px/tick_16px.svg'); +} + +.ebIcon_simpleGreenTick { + background-image: url('../resources/16px/simple_green_tick.svg'); +} + +.ebIcon_simpleTick_black { + background-image: url('../resources/16px/simple_tick.svg'); +} + +.ebIcon_download { + background-image: url('../resources/16px/download_black.svg'); +} + +.ebIcon_download_white { + background-image: url('../resources/16px/download_white.svg'); +} + +.ebIcon_downloadWhite { + background-image: url('../resources/16px/download_white_16px.svg'); +} + +.ebIcon_documentWhite { + background-image: url('../resources/16px/document_white_16px.svg'); +} + +.ebIcon_expand { + background-image: url('../resources/16px/expand_black_16px.svg'); +} + +.ebIcon_rowCollapsed { + background-image: url('../resources/16px/rowCollapsed_black_16px.svg'); +} + +.ebIcon_rowExpanded { + background-image: url('../resources/16px/rowExpanded_black_16px.svg'); +} + +.ebIcon_rowView { + background-image: url('../resources/16px/rowView_black_16px.svg'); +} + +.ebIcon_rowView_white { + background-image: url('../resources/16px/rowView_white.svg'); +} + +.ebIcon_externalApp { + background-image: url('../resources/16px/externalApp_black_16px.svg'); +} + +.ebIcon_externalApp_white { + background-image: url('../resources/16px/externalApp_white_16px.svg'); +} + +.ebIcon_fullscreen { + background-image: url('../resources/16px/fullscreen_black_16px.svg'); +} + +.ebIcon_fullscreenMinimize { + background-image: + url('../resources/16px/fullscreenMinimise_black_16px.svg'); +} + +.ebIcon_help { + background-image: url('../resources/16px/help_black_16px.svg'); +} + +.ebIcon_help_white { + background-image: url('../resources/16px/help_white.svg'); +} + +.ebIcon_info { + background-image: url('../resources/16px/info_black.svg'); +} + +.ebIcon_info_white { + background-image: url('../resources/16px/info_white.svg'); +} + +.ebIcon_dialogInfo { + background-image: url('../resources/16px/dialogInfo_blue.svg'); +} + +.ebIcon_dialogInfo_white { + background-image: url('../resources/16px/dialogInfo_white.svg'); +} + +.ebIcon_infoMsgIndicator { + background-image: url('../resources/16px/infoMsgIndicator_16px.svg'); +} + +.ebIcon_exitFullscreen { + background-image: + url('../resources/16px/minimiseFullscreen_black_16px.svg'); +} + +.ebIcon_refresh { + background-image: url('../resources/16px/refresh_black_16px.svg'); +} + +.ebIcon_refresh_white { + background-image: url('../resources/16px/refresh_white_16px.svg'); +} + +.ebIcon_settings { + background-image: url('../resources/16px/settings_black_16px.svg'); +} + +.ebIcon_settings_white { + background-image: url('../resources/16px/settings_white_16px.svg'); +} + +.ebIcon_user { + background-image: url('../resources/16px/user_black_16px.svg'); +} + +.ebIcon_user_white { + background-image: url('../resources/16px/user_white_16px.svg'); +} + +.ebIcon_close { + background-image: url('../resources/16px/X_black_16px.svg'); +} + +.ebIcon_close_white { + background-image: url('../resources/16px/close_white_16px.svg'); +} + +.ebIcon_close_blue { + background-image: url('../resources/16px/X_blue_16px.svg'); +} + +.ebIcon_close_paleBlue { + background-image: url('../resources/16px/X_paleBlue_16px.svg'); +} + +.ebIcon_close_green { + background-image: url('../resources/16px/X_green_16px.svg'); +} + +.ebIcon_close_orange { + background-image: url('../resources/16px/X_orange_16px.svg'); +} + +.ebIcon_close_red { + background-image: url('../resources/16px/X_red_16px.svg'); +} + +.ebIcon_close_yellow { + background-image: url('../resources/16px/X_yellow_16px.svg'); +} + +.ebIcon_minus { + background-image: url('../resources/16px/minus_black_16px.svg'); +} + +.ebIcon_plus { + background-image: url('../resources/16px/plus_black_16px.svg'); +} + +.ebIcon_add { + background-image: url('../resources/16px/add_black_16px.svg'); +} + +.ebIcon_add_white { + background-image: url('../resources/16px/add_white_16px.svg'); +} + +.ebIcon_multiSelect { + background-image: url('../resources/16px/multiSelect_black_16px.svg'); +} + +.ebIcon_multiSelect_white { + background-size: contain; + background-image: url('../resources/16px/multiSelect_white.svg'); +} + +.ebIcon_multiSort { + background-image: url('../resources/16px/multi-sort.svg'); +} + +.ebIcon_multiSort_white { + background-image: url('../resources/16px/multi-sort_white.svg'); +} + +.ebIcon_sort { + background-image: url('../resources/16px/sort.svg'); +} + +.ebIcon_sort_white { + background-image: url('../resources/16px/sort_white.svg'); +} + +.ebIcon_stop { + background-image: url('../resources/16px/stop_black_16px.svg'); +} + +.ebIcon_pause { + background-image: url('../resources/16px/pause_black_16px.svg'); +} + +.ebIcon_suspend { + background-image: url('../resources/16px/suspend_black_16px.svg'); +} + +.ebIcon_resume { + background-image: url('../resources/16px/resume_black_16px.svg'); +} + +.ebIcon_play { + background-image: url('../resources/16px/play_black_16px.svg'); +} + +.ebIcon_fastForward { + background-image: url('../resources/16px/fastForward_black_16px.svg'); +} + +.ebIcon_fastRewind { + background-image: url('../resources/16px/fastRewind_black_16px.svg'); +} + +.ebIcon_print { + background-image: url('../resources/16px/print_black_16px.svg'); +} + +.ebIcon_print_white { + background-image: url('../resources/16px/print_white_16px.svg'); +} + +.ebIcon_calendar { + background-image: url('../resources/16px/calendar_black_16px.svg'); +} + +.ebIcon_calendar_white { + background-image: url('../resources/16px/calendar_white_16px.svg'); +} + +.ebIcon_addToFolder { + background-image: url('../resources/16px/addToFolder_black.svg'); +} + +.ebIcon_addToFolder_white { + background-image: url('../resources/16px/addToFolder_white.svg'); +} + +.ebIcon_alarmCleared { + background-image: url('../resources/16px/alarmCleared_16px.svg'); +} + +.ebIcon_alarmCleared_white { + background-image: url('../resources/16px/alarmCleared_white_16px.svg'); +} + +.ebIcon_alarmCritical { + background-image: url('../resources/16px/alarmCritical_16px.svg'); +} + +.ebIcon_alarmCritical_white { + background-image: url('../resources/16px/alarmCritical_white_16px.svg'); +} + +.ebIcon_alarmHeartbeat { + background-image: url('../resources/16px/alarmHeartbeat_16px.svg'); +} + +.ebIcon_alarmIndeterminate { + background-image: url('../resources/16px/alarmIndeterminate_16px.svg'); +} + +.ebIcon_alarmIndeterminate_white { + background-image: + url('../resources/16px/alarmIndeterminate_white_16px.svg'); +} + +.ebIcon_alarmMajor { + background-image: url('../resources/16px/alarmMajor_16px.svg'); +} + +.ebIcon_alarmMajor_white { + background-image: url('../resources/16px/alarmMajor_white_16px.svg'); +} + +.ebIcon_alarmMinor { + background-image: url('../resources/16px/alarmMinor_16px.svg'); +} + +.ebIcon_alarmMinor_white { + background-image: url('../resources/16px/alarmMinor_white_16px.svg'); +} + +.ebIcon_alarmWarning { + background-image: url('../resources/16px/alarmWarning_16px.svg'); +} + +.ebIcon_alarmWarning_white { + background-image: url('../resources/16px/alarmWarning_white_16px.svg'); +} + +.ebIcon_alarmOtherGrouping { + background-image: url('../resources/16px/alarmOtherGrouping_16px.svg'); +} + +.ebIcon_alarmUnacknowledged { + background-image: url('../resources/16px/alarmUnacknowledged.svg'); +} + +.ebIcon_alarmUnacknowledged_white { + background-image: url('../resources/16px/alarmUnacknowledged_white.svg'); +} + +.ebIcon_alarmUnspecified { + background-image: url('../resources/16px/alarmUnspecified_16px.svg'); +} + +.ebIcon_acknowledgeAlarm { + background-image: url('../resources/16px/acknowledgeAlarm.svg'); +} + +.ebIcon_acknowledgeAlarm_white { + background-image: url('../resources/16px/acknowledgeAlarm_white.svg'); +} + +.ebIcon_clearAlarm { + background-image: url('../resources/16px/clearAlarm.svg'); +} + +.ebIcon_clearAlarm_white { + background-image: url('../resources/16px/clearAlarm_white.svg'); +} + +.ebIcon_bsc { + background-image: url('../resources/16px/BSC_black_16px.svg'); +} + +.ebIcon_bscYellow { + background-image: url('../resources/16px/BSC_Yellow_16px.svg'); +} + +.ebIcon_bscFunction { + background-image: url('../resources/16px/BSCFunction_black_16px.svg'); +} + +.ebIcon_bscFunctionYellow { + background-image: url('../resources/16px/BSCFunction_Yellow_16px.svg'); +} + +.ebIcon_cabinet { + background-image: url('../resources/16px/cabinet_black_16px.svg'); +} + +.ebIcon_cellGray { + background-image: url('../resources/16px/cell_gray_16px.svg'); +} + +.ebIcon_cellGreen { + background-image: url('../resources/16px/cell_green_16px.svg'); +} + +.ebIcon_cellRed { + background-image: url('../resources/16px/cell_red_16px.svg'); +} + +.ebIcon_cellAdjacent { + background-image: url('../resources/16px/cellAdjacent_16px.svg'); +} + +.ebIcon_cellExternal { + background-image: url('../resources/16px/cellExternal_16px.svg'); +} + +.ebIcon_charging { + background-image: url('../resources/16px/charging_black.svg'); +} + +.ebIcon_charging_white { + background-size: contain; + background-image: url('../resources/16px/charging_white.svg'); +} + +.ebIcon_connected { + background-image: url('../resources/16px/connected_black_16px.svg'); +} + +.ebIcon_disconnected { + background-image: url('../resources/16px/disconnected_black_16px.svg'); +} + +.ebIcon_connectionError { + background-image: + url('../resources/16px/connectionError_black_16px.svg'); +} + +.ebIcon_core { + background-image: url('../resources/16px/core_black_16px.svg'); +} + +.ebIcon_coreSubscriber { + background-image: url('../resources/16px/coreSubscriber_black_16px.svg'); +} + +.ebIcon_database { + background-image: url('../resources/16px/database_black_16px.svg'); +} + +.ebIcon_ftpServer { + background-image: url('../resources/16px/ftpServer_black_16px.svg'); +} + +.ebIcon_ftpServerFunction { + background-image: + url('../resources/16px/ftpServerFunction_black_16px.svg'); +} + +.ebIcon_gatewayFunction { + background-image: + url('../resources/16px/gatewayFunction_black_16px.svg'); +} + +.ebIcon_grabHandle { + background-image: url('../resources/16px/grabHandle_black_16px.svg'); +} + +.ebIcon_grabHandle_white { + background-size: contain; + background-image: url('../resources/16px/grabHandle_white.svg'); +} + +.ebIcon_managedFunction { + background-image: + url('../resources/16px/managedFunction_black_16px.svg'); +} + +.ebIcon_managedGroup { + background-image: url('../resources/16px/managedGroup_black_16px.svg'); +} + +.ebIcon_managementNode { + background-image: url('../resources/16px/managementNode_black_16px.svg'); +} + +.ebIcon_network { + background-image: url('../resources/16px/network_black_16px.svg'); +} + +.ebIcon_networkElement { + background-image: url('../resources/16px/networkElement_black_16px.svg'); +} + +.ebIcon_networkElement_white { + background-image: url('../resources/16px/networkElement_white_16px.svg'); +} + +.ebIcon_rbs { + background-image: url('../resources/16px/RBS_black_16px.svg'); +} + +.ebIcon_rbs_white { + background-image: url('../resources/16px/RBS_white_16px.svg'); +} + +.ebIcon_routeSwitch { + background-image: url('../resources/16px/routeSwitch.svg'); +} + +.ebIcon_rxi { + background-image: url('../resources/16px/rxi_black_16px.svg'); +} + +.ebIcon_switchFunction { + background-image: url('../resources/16px/switchFunction_black_16px.svg'); +} + +.ebIcon_technicianPresent { + background-image: url('../resources/16px/technicianPresent_16px.svg'); +} + +.ebIcon_terminal { + background-image: url('../resources/16px/terminal_black_16px.svg'); +} + +.ebIcon_topology { + background-image: url('../resources/16px/topology_black_16px.svg'); +} + +.ebIcon_access { + background-image: url('../resources/16px/access_black_16px.svg'); +} + +.ebIcon_access_white { + background-image: url('../resources/16px/access_white_16px.svg'); +} + +.ebIcon_accessSettings { + background-image: url('../resources/16px/accessSettings_black_16px.svg'); +} + +.ebIcon_accessSettings_white { + background-image: url('../resources/16px/accessSettings_white_16px.svg'); +} + +.ebIcon_alignCenter { + background-image: url('../resources/16px/alignCenter_black_16px.svg'); +} + +.ebIcon_alignCenter_white { + background-image: url('../resources/16px/alignCenter_white.svg'); +} + +.ebIcon_alignLeft { + background-image: url('../resources/16px/alignLeft_black_16px.svg'); +} + +.ebIcon_alignLeft_white { + background-image: url('../resources/16px/alignLeft_white.svg'); +} + +.ebIcon_alignRight { + background-image: url('../resources/16px/alignRight_black_16px.svg'); +} + +.ebIcon_alignRight_white { + background-image: url('../resources/16px/alignRight_white.svg'); +} + +.ebIcon_cli { + background-image: + url('../resources/16px/CommandLineInterface_black_16px.svg'); +} + +.ebIcon_cli_white { + background-image: + url('../resources/16px/CommandLineInterface_white_16px.svg'); +} + +.ebIcon_controllingNode { + background-image: url('../resources/16px/controllingNode.svg'); +} + +.ebIcon_grid3x3 { + background-image: url('../resources/16px/grid3X3_black_16px.svg'); +} + +.ebIcon_grid3x3_white { + background-image: url('../resources/16px/grid3x3_white.svg'); +} + +.ebIcon_grid4x4 { + background-image: url('../resources/16px/grid4X4_black_16px.svg'); +} + +.ebIcon_grid4x4_white { + background-image: url('../resources/16px/grid4x4_white.svg'); +} + +.ebIcon_gridView { + background-image: url('../resources/16px/gridView_black_16px.svg'); +} + +.ebIcon_gridView_white { + background-image: url('../resources/16px/gridView_white.svg'); +} + +.ebIcon_jumpTo { + background-image: url('../resources/16px/jumpTo_black_16px.svg'); +} + +.ebIcon_microwave { + background-image: url('../resources/16px/microwave.svg'); +} + +.ebIcon_mo { + background-image: url('../resources/16px/mo.svg'); +} + +.ebIcon_security { + background-image: url('../resources/16px/security_black_16px.svg'); +} + +.ebIcon_security_white { + background-image: url('../resources/16px/security_white_16px.svg'); +} + +.ebIcon_site { + background-image: url('../resources/16px/site_black_16px.svg'); +} + +.ebIcon_siteManager { + background-image: url('../resources/16px/siteManager_black_16px.svg'); +} + +.ebIcon_subnetwork { + background-image: url('../resources/16px/subnetwork.svg'); +} + +.ebIcon_gateway, .ebIcon_switch { + background-image: url('../resources/16px/switch.svg'); +} + +.ebIcon_tip { + background-image: url('../resources/16px/tip_black_16px.svg'); +} + +.ebIcon_tip_white { + background-image: url('../resources/16px/tip_white_16px.svg'); +} + +.ebIcon_attach { + background-image: url('../resources/16px/attach_black_16px.svg'); +} + +.ebIcon_attach_white { + background-size: contain; + background-image: url('../resources/16px/attach_white.svg'); +} + +.ebIcon_clock { + background-image: url('../resources/16px/clock_black_16px.svg'); +} + +.ebIcon_clock_white { + background-image: url('../resources/16px/clock_white_16px.svg'); +} + +.ebIcon_windowMaximize { + background-image: url('../resources/16px/WindowMaximize_black_16px.svg'); +} + +.ebIcon_windowMinimize { + background-image: url('../resources/16px/WindowMinimize_black_16px.svg'); +} + +.ebIcon_deprecated { + background-image: url('../resources/16px/deprecated_16px.svg'); +} + +.ebIcon_obsolete { + background-image: url('../resources/16px/obsolete_16px.svg'); +} + +.ebIcon_newStatus_blue { + background-image: url('../resources/16px/newStatus_blue_16px.svg'); +} + +.ebIcon_newStatus_green { + background-image: url('../resources/16px/newStatus_green_16px.svg'); +} + +.ebIcon_upload { + background-image: url('../resources/16px/upload_black_16px.svg'); +} + +.ebIcon_activate { + background-image: url('../resources/16px/activate_black_16px.svg'); +} + +.ebIcon_activate_white { + background-size: contain; + background-image: url('../resources/16px/activate_white.svg'); +} + +.ebIcon_deactivate { + background-image: url('../resources/16px/deactivate_black_16px.svg'); +} + +.ebIcon_deactivate_white { + background-size: contain; + background-image: url('../resources/16px/deactivate_white.svg'); +} + +.ebIcon_switchBetween { + background-image: url('../resources/16px/switchBetween_black_16px.svg'); +} + +.ebIcon_switchBetween_white { + background-image: url('../resources/16px/switchBetween_white_16px.svg'); +} + +.ebIcon_eye { + background-image: url('../resources/16px/eye_black_16px.svg'); +} + +.ebIcon_eye_white { + background-image: url('../resources/16px/eye_white_16px.svg'); +} + +.ebIcon_eyeLine { + background-image: url('../resources/16px/eyeLine_black_16px.svg'); +} + +.ebIcon_eyeLine_white { + background-image: url('../resources/16px/eyeLine_white.svg'); +} + +.ebIcon_activityTray { + background-image: url('../resources/16px/activity_16px_black.svg'); +} + +.ebIcon_note { + background-image: url('../resources/16px/note_black_16px.svg'); + background-size: contain; +} + +.ebIcon_note_white { + background-image: url('../resources/16px/note_white_16px.svg'); +} + +.ebIcon_tableView { + background-image: url('../resources/16px/tableView_black_16px.svg'); +} + +.ebIcon_tableView_white { + background-image: url('../resources/16px/tableView_white_16px.svg'); +} + +.ebIcon_synced { + background-image: url('../resources/16px/Syncd_16px.svg'); +} + +.ebIcon_syncError { + background-image: url('../resources/16px/SyncError_16px.svg'); +} + +.ebIcon_syncing { + background-image: url('../resources/16px/Syncing_Static_16px.svg'); +} + +.ebIcon_syncing_animated { + background-image: url('../resources/16px/Syncing_Animated_16px.svg'); +} + +/* Breadcrumb */ +.ebBreadcrumbs { + position: relative; + display: block; + font-size: 0; + margin-top: 12px; + margin-bottom: 4px; +} + +.ebBreadcrumbs-link { + font-size: 1.2rem; + vertical-align: middle; + display: inline-block +} + +.ebBreadcrumbs-list { + position: absolute; + left: 0; + margin-top: 6px; + display: none; + min-width: calc(100% - 16px); + max-width: 250px; + z-index: 1500 +} + +.ebBreadcrumbs-arrow { + margin-left: .6rem; + vertical-align: middle; + outline: none; + display: inline-block; + line-height: 12px +} + +.ebBreadcrumbs-arrow:focus>* { + opacity: 1 +} + +.ebBreadcrumbs-arrow_hidden { + display: none +} + +.ebBreadcrumbs-arrow:focus+.ebBreadcrumbs-list { + display: block +} + +.ebBreadcrumbs-item { + position: relative; + font-size: 0; + white-space: nowrap; + display: inline-block; + margin-bottom: .8rem +} + +.ebBreadcrumbs-item:after { + vertical-align: middle; + display: inline-block; + width: 20px; + content: "/"; + font-size: 1.6rem; + text-align: center; + color: #999; + cursor: default !important; + pointer-events: none !important; + -ms-touch-action: none !important; + touch-action: none !important; + -khtml-user-select: none !important; + -moz-user-select: none !important; + -o-user-select: none !important; + -webkit-user-select: none !important; + user-select: none +} + +.ebBreadcrumbs-item:last-child { + margin-right: 0 +} + +.ebBreadcrumbs-item:last-child>.ebBreadcrumbs-link { + -ms-touch-action: none !important; + touch-action: none !important; + -khtml-user-select: none !important; + -moz-user-select: none !important; + -o-user-select: none !important; + -webkit-user-select: none !important; + user-select: none +} + +.ebBreadcrumbs-item:last-child:after { + content: ""; + padding: 0; + font-size: 0; + width: 0; +} + +.ebBreadcrumbs a { + font-size: 1.2rem; + color: #0066b3; + text-decoration: none; +} + +.ebBreadcrumbs a:hover { + text-decoration: underline; + outline: none; +} + +.ebBreadcrumbs a:active { + text-decoration: underline +} + +.ebBreadcrumbs a:focus { + outline: none; + text-decoration: underline; + box-shadow: none; +} \ No newline at end of file diff --git a/client/client-full/src/main/resources/webapp/css/styles.css b/client/client-full/src/main/resources/webapp/css/styles.css new file mode 100644 index 000000000..dfdb1803d --- /dev/null +++ b/client/client-full/src/main/resources/webapp/css/styles.css @@ -0,0 +1,296 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +.GradientBlock { + display: block; + height: 150px; + border-radius: 4px; + vertical-align: top; + cursor: pointer; + margin-top: 0; + margin-bottom: 15px; + margin-left: 15px; + margin-right: 15px; + font-size: 0; + width: 700px; +} + +.GradientBlock-link { + font-size: inherit; +} + +.GradientBlock:after { + content: ""; +} + +.GradientBlock_gradient_green { + background-image: linear-gradient(to right bottom, #a2c517 0%, #30ab55 100%); +} + +.GradientBlock_gradient_purple { + background-image: linear-gradient(to right bottom, #5f1f70 0%, #db004f 100%); +} + +.GradientBlock_gradient_blue { + background-image: linear-gradient(to right bottom, #009f80 0%, #0082b9 100%); +} + +.GradientBlock_gradient_darkblue { + background-image: linear-gradient(to right bottom, #246ab3 0%, #5f1f70 100%); +} + +.GradientBlock_flat_darkGreen { + background-color: #00625f; +} + +.GradientBlock_flat_paleBlue { + background-color: #00a9d4; +} + +.GradientBlock_flat_yellow { + background-color: #fabb00; +} + +.GradientBlock_flat_green { + background-color: #89ba17; +} + +.GradientBlock_flat_purple { + background-color: #7b0663; +} + +.GradientBlock_flat_red { + background-color: #e32119; +} + +.GradientBlock-icon { + display: inline-block; + width: 54px; + margin-left: 16px; + height: 100%; + background-repeat: no-repeat; + background-size: 100%; + background-position: 0 30px; +} + +.GradientBlock-icon_icon_camera { + background-image: url('help/resources/help/camera.svg'); +} + +.GradientBlock-icon_icon_book { + background-image: url('help/resources/help/book.svg'); +} + +.GradientBlock-icon_icon_screen { + background-image: url('/resources/screen.svg'); +} + +.GradientBlock-icon_icon_note { + background-image: url('../resources/16px/note_white_16px.svg'); +} + +.GradientBlock-icon_icon_monitor { + background-image: url('../resources/16px/eye_white_16px.svg'); +} + +.GradientBlock-icon_icon_deploy { + background-image: url('../resources/16px/deploy_white_16px.svg'); +} + +.GradientBlock-icon_icon_faq { + background-image: url('help/resources/help/faq.svg'); +} + +.GradientBlock-icon_icon_page { + background-image: url('help/resources/help/page.svg'); +} + +.GradientBlock-icon_icon_video { + background-image: url('help/resources/help/video.svg'); +} + +.GradientBlock-content { + display: inline-block; + width: calc(100% - 70px); + padding: 0 16px 0 12px; + box-sizing: border-box; + -moz-box-sizing: border-box; + vertical-align: top; +} + +.GradientBlock-title { + font-size: 24px; + margin-top: 30px; + color: white; + line-height: 24px; +} + +.GradientBlock-desc { + margin-top: 12px; + line-height: 12px; + font-size: 12px; + color: white; +} + +.ebQuickActionBar { + margin-top: 1.2rem; + font-size: 0; + height: 32px; + padding: 0.4rem 0; + background-color: #e8e8e8; + position: relative; + width: 100%; + overflow: hidden; + line-height: 0; + box-sizing: border-box; + -webkit-transition: background-color 0.1s ease-in; + transition: background-color 0.1s ease-in; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; +} + +.ebQuickActionBar_context { + background-color: #f3f3f3; + border-bottom: 2px solid #65cbe5; + box-sizing: border-box; + height: 32px; +} + +.ebQuickActionBar>* { + margin-left: 0.4rem; + margin-right: 0.4rem; + vertical-align: middle; +} + +.ebQuickActionBar-iconHolder { + display: inline-block; + vertical-align: middle; + height: 1.6rem; +} + +.ebQuickActionBar-separator { + display: inline-block; + vertical-align: middle; + border-left: 1px solid #CCCCCC; + margin: 0 8px; + height: 2.4rem; +} + +.ebQuickActionBar-Commands, .ebQuickActionBar-commands { + display: inline-block; + margin: 0; + font-size: 0; + line-height: 2.4rem; +} + +.ebQuickActionBar-Commands-iconHolder, + .ebQuickActionBar-commands-iconHolder { + display: inline-block; + vertical-align: middle; + height: 1.6rem; +} + +.ebQuickActionBar-Commands-separator, + .ebQuickActionBar-commands-separator { + display: inline-block; + vertical-align: middle; + border-left: 1px solid #CCCCCC; + margin: 0 8px; + height: 2.4rem; +} + +.ebQuickActionBar-Commands>*, .ebQuickActionBar-commands>* { + margin-left: 0.4rem; + margin-right: 0.4rem; + vertical-align: middle; +} + +.ebQuickActionBar-Commands-block, .ebQuickActionBar-commands-block, + .ebQuickActionBar-CommandsBlock, .ebQuickActionBar-commandsBlock { + margin: 0 0.8rem; + display: inline-block; +} + +.ebQuickActionBar-Commands-block>*, .ebQuickActionBar-commands-block>*, + .ebQuickActionBar-CommandsBlock>*, .ebQuickActionBar-commandsBlock>* { + margin-left: 0.4rem; + margin-right: 0.4rem; + vertical-align: middle; +} + +.ebQuickActionBar-Commands-block :last-child, + .ebQuickActionBar-commands-block :last-child, + .ebQuickActionBar-CommandsBlock :last-child, + .ebQuickActionBar-commandsBlock :last-child { + margin-right: 0; +} + +.layoutWrapper { + margin: 0 40px; +} + +.appHeading { + color: rgb(51, 51, 51); + display: block; + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + height: 32px; + line-height: 12px; + position: relative; +} + +.content { + margin-top: 14px; +} + +.banner { + opacity: 0; + margin-left: -25px; +} + +.title { + padding: 0px; +} + +.placeholder { + float: left; + text-align: center; + white-space: nowrap; + display: none; +} + +.onapLogo { + display: block; + height: 225px; + width: 325px; + padding-bottom: 31px; +} + +.apexLogo { + display: block; + height: 225px; + width: 325px; +} + +.banner_wrapper { + margin-left: 400px; // + width: calc(100% - 400px); +} \ No newline at end of file diff --git a/client/client-full/src/main/resources/webapp/images/Apex.png b/client/client-full/src/main/resources/webapp/images/Apex.png new file mode 100644 index 0000000000000000000000000000000000000000..6abacdc3e60a74b132842804a51a29c8fa0f7f5b GIT binary patch literal 341009 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
    mD;-kre&u`K;)?S2Y& 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�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

    qHj%%6V2`K)^wbz4<$Ts! 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 I%G?wGe=EX2F8}}l literal 0 HcmV?d00001 diff --git a/client/client-full/src/main/resources/webapp/index.html b/client/client-full/src/main/resources/webapp/index.html new file mode 100644 index 000000000..adda16c90 --- /dev/null +++ b/client/client-full/src/main/resources/webapp/index.html @@ -0,0 +1,102 @@ + + + + + + +Apex Clients + + + + + + + + + + + + +
    +
    Apex
    +
    +
    + +
    + + + + + + + + + diff --git a/client/client-full/src/main/resources/webapp/js/ApexMain.js b/client/client-full/src/main/resources/webapp/js/ApexMain.js new file mode 100644 index 000000000..47b9621d8 --- /dev/null +++ b/client/client-full/src/main/resources/webapp/js/ApexMain.js @@ -0,0 +1,43 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +$(document).ready(function() { + var widthIncrease = 30; + var slideEaseTime = 300; + var hoverIncreaseTime = 50; + $(".placeholder").fadeIn("slow"); + $(".banner").each(function(i) { + var width = $(this).width(); + $(this).delay(i * 250).animate({ + 'opacity' : 1, + "margin-left" : "15px" + }, slideEaseTime, function() { + $(this).hover(function() { + $(this).stop(true, false).animate({ + "width" : width + widthIncrease + }, hoverIncreaseTime); + }, function() { + $(this).stop(true, false).animate({ + "width" : width + }, hoverIncreaseTime); + }); + }) + }) +}); \ No newline at end of file diff --git a/client/client-full/src/main/resources/webapp/js/jquery/jquery-1.12.4.js b/client/client-full/src/main/resources/webapp/js/jquery/jquery-1.12.4.js new file mode 100644 index 000000000..b038fc51f --- /dev/null +++ b/client/client-full/src/main/resources/webapp/js/jquery/jquery-1.12.4.js @@ -0,0 +1,11551 @@ +/*! + * jQuery JavaScript Library v1.12.4 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-05-20T17:17Z + */ + +(function(global, factory) { + + if (typeof module === "object" && typeof module.exports === "object") { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? factory(global, true) : function(w) { + if (!w.document) { + throw new Error("jQuery requires a window with a document"); + } + return factory(w); + }; + } else { + factory(global); + } + + // Pass this if window is not defined yet +} + ( + typeof window !== "undefined" ? window : this, + function(window, noGlobal) { + + // Support: Firefox 18+ + // Can't be in strict mode, several libs including ASP.NET + // trace + // the stack via arguments.caller.callee and Firefox dies if + // you try to trace through "use strict" call chains. + // (#13335) + // "use strict"; + var deletedIds = []; + + var document = window.document; + + var slice = deletedIds.slice; + + var concat = deletedIds.concat; + + var push = deletedIds.push; + + var indexOf = deletedIds.indexOf; + + var class2type = {}; + + var toString = class2type.toString; + + var hasOwn = class2type.hasOwnProperty; + + var support = {}; + + var version = "1.12.4", + + // Define a local copy of jQuery + jQuery = function(selector, context) { + + // The jQuery object is actually just the init + // constructor 'enhanced' + // Need init if jQuery is called (just allow error to be + // thrown if not included) + return new jQuery.fn.init(selector, context); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function(all, letter) { + return letter.toUpperCase(); + }; + + jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery : version, + + constructor : jQuery, + + // Start with an empty selector + selector : "", + + // The default length of a jQuery object is 0 + length : 0, + + toArray : function() { + return slice.call(this); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get : function(num) { + return num != null ? + + // Return just the one element from the set + (num < 0 ? this[num + this.length] : this[num]) : + + // Return all the elements in a clean array + slice.call(this); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack : function(elems) { + + // Build a new jQuery matched element set + var ret = jQuery.merge(this.constructor(), elems); + + // Add the old object onto the stack (as a + // reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched + // set. + each : function(callback) { + return jQuery.each(this, callback); + }, + + map : function(callback) { + return this.pushStack(jQuery.map(this, function(elem, i) { + return callback.call(elem, i, elem); + })); + }, + + slice : function() { + return this.pushStack(slice.apply(this, arguments)); + }, + + first : function() { + return this.eq(0); + }, + + last : function() { + return this.eq(-1); + }, + + eq : function(i) { + var len = this.length, j = +i + (i < 0 ? len : 0); + return this.pushStack(j >= 0 && j < len ? [ this[j] ] : []); + }, + + end : function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery + // method. + push : push, + sort : deletedIds.sort, + splice : deletedIds.splice + }; + + jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; + + // Handle a deep copy situation + if (typeof target === "boolean") { + deep = target; + + // skip the boolean and the target + target = arguments[i] || {}; + i++; + } + + // Handle case when target is a string or something + // (possible in deep copy) + if (typeof target !== "object" && !jQuery.isFunction(target)) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if (i === length) { + target = this; + i--; + } + + for (; i < length; i++) { + + // Only deal with non-null/undefined values + if ((options = arguments[i]) != null) { + + // Extend the base object + for (name in options) { + src = target[name]; + copy = options[name]; + + // Prevent never-ending loop + if (target === copy) { + continue; + } + + // Recurse if we're merging plain objects or + // arrays + if (deep && copy + && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) { + + if (copyIsArray) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone + // them + target[name] = jQuery.extend(deep, clone, copy); + + // Don't bring in undefined values + } else if (copy !== undefined) { + target[name] = copy; + } + } + } + } + + // Return the modified object + return target; + }; + + jQuery + .extend({ + + // Unique for each copy of jQuery on the page + expando : "jQuery" + (version + Math.random()).replace(/\D/g, ""), + + // Assume jQuery is ready without the ready + // module + isReady : true, + + error : function(msg) { + throw new Error(msg); + }, + + noop : function() { + }, + + // See test/unit/core.js for details concerning + // isFunction. + // Since version 1.3, DOM methods and functions + // like alert + // aren't supported. They return false on IE + // (#2968). + isFunction : function(obj) { + return jQuery.type(obj) === "function"; + }, + + isArray : Array.isArray || function(obj) { + return jQuery.type(obj) === "array"; + }, + + isWindow : function(obj) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric : function(obj) { + + // parseFloat NaNs numeric-cast false + // positives (null|true|false|"") + // ...but misinterprets leading-number + // strings, particularly hex literals + // ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from + // parseFloat (#15100) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray(obj) && (realStringObj - parseFloat(realStringObj) + 1) >= 0; + }, + + isEmptyObject : function(obj) { + var name; + for (name in obj) { + return false; + } + return true; + }, + + isPlainObject : function(obj) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the + // presence of the constructor property. + // Make sure that DOM nodes and window + // objects don't pass through, as well + if (!obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow(obj)) { + return false; + } + + try { + + // Not own constructor property must be + // Object + if (obj.constructor && !hasOwn.call(obj, "constructor") + && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) { + return false; + } + } catch (e) { + + // IE8,9 Will throw exceptions on + // certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited + // properties before own properties. + if (!support.ownFirst) { + for (key in obj) { + return hasOwn.call(obj, key); + } + } + + // Own properties are enumerated firstly, so + // to speed up, + // if last one is own, then all properties + // are own. + for (key in obj) { + } + + return key === undefined || hasOwn.call(obj, key); + }, + + type : function(obj) { + if (obj == null) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? class2type[toString + .call(obj)] + || "object" : typeof obj; + }, + + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval : function(data) { + if (data && jQuery.trim(data)) { + + // We use execScript on Internet + // Explorer + // We use an anonymous function so that + // context is window + // rather than jQuery in Firefox + (window.execScript || function(data) { + window["eval"].call(window, data); // jscs:ignore + // requireDotNotation + })(data); + } + }, + + // Convert dashed to camelCase; used by the css + // and data modules + // Microsoft forgot to hump their vendor prefix + // (#9572) + camelCase : function(string) { + return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase); + }, + + nodeName : function(elem, name) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each : function(obj, callback) { + var length, i = 0; + + if (isArrayLike(obj)) { + length = obj.length; + for (; i < length; i++) { + if (callback.call(obj[i], i, obj[i]) === false) { + break; + } + } + } else { + for (i in obj) { + if (callback.call(obj[i], i, obj[i]) === false) { + break; + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim : function(text) { + return text == null ? "" : (text + "").replace(rtrim, ""); + }, + + // results is for internal usage only + makeArray : function(arr, results) { + var ret = results || []; + + if (arr != null) { + if (isArrayLike(Object(arr))) { + jQuery.merge(ret, typeof arr === "string" ? [ arr ] : arr); + } else { + push.call(ret, arr); + } + } + + return ret; + }, + + inArray : function(elem, arr, i) { + var len; + + if (arr) { + if (indexOf) { + return indexOf.call(arr, elem, i); + } + + len = arr.length; + i = i ? i < 0 ? Math.max(0, len + i) : i : 0; + + for (; i < len; i++) { + + // Skip accessing in sparse arrays + if (i in arr && arr[i] === elem) { + return i; + } + } + } + + return -1; + }, + + merge : function(first, second) { + var len = +second.length, j = 0, i = first.length; + + while (j < len) { + first[i++] = second[j++]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on + // otherwise arraylike objects (e.g., + // NodeLists) + if (len !== len) { + while (second[j] !== undefined) { + first[i++] = second[j++]; + } + } + + first.length = i; + + return first; + }, + + grep : function(elems, callback, invert) { + var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; + + // Go through the array, only saving the + // items + // that pass the validator function + for (; i < length; i++) { + callbackInverse = !callback(elems[i], i); + if (callbackInverse !== callbackExpect) { + matches.push(elems[i]); + } + } + + return matches; + }, + + // arg is for internal usage only + map : function(elems, callback, arg) { + var length, value, i = 0, ret = []; + + // Go through the array, translating each of + // the items to their new values + if (isArrayLike(elems)) { + length = elems.length; + for (; i < length; i++) { + value = callback(elems[i], i, arg); + + if (value != null) { + ret.push(value); + } + } + + // Go through every key on the object, + } else { + for (i in elems) { + value = callback(elems[i], i, arg); + + if (value != null) { + ret.push(value); + } + } + } + + // Flatten any nested arrays + return concat.apply([], ret); + }, + + // A global GUID counter for objects + guid : 1, + + // Bind a function to a context, optionally + // partially applying any + // arguments. + proxy : function(fn, context) { + var args, proxy, tmp; + + if (typeof context === "string") { + tmp = fn[context]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is + // callable, in the spec + // this throws a TypeError, but we will just + // return undefined. + if (!jQuery.isFunction(fn)) { + return undefined; + } + + // Simulated bind + args = slice.call(arguments, 2); + proxy = function() { + return fn.apply(context || this, args.concat(slice.call(arguments))); + }; + + // Set the guid of unique handler to the + // same of original handler, so it can be + // removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now : function() { + return +(new Date()); + }, + + // jQuery.support is not used in Core but other + // projects attach their + // properties to it so it needs to exist. + support : support + }); + + // JSHint would error on this code due to the Symbol not + // being defined in ES5. + // Defining this global in .jshintrc would create a danger + // of using the global + // unguarded in another place, it seems safer to just + // disable JSHint for these + // three lines. + /* jshint ignore: start */ + if (typeof Symbol === "function") { + jQuery.fn[Symbol.iterator] = deletedIds[Symbol.iterator]; + } + /* jshint ignore: end */ + + // Populate the class2type map + jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), + function(i, name) { + class2type["[object " + name + "]"] = name.toLowerCase(); + }); + + function isArrayLike(obj) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, type = jQuery.type(obj); + + if (type === "function" || jQuery.isWindow(obj)) { + return false; + } + + return type === "array" || length === 0 || typeof length === "number" && length > 0 + && (length - 1) in obj; + } + var Sizzle = + /* + * ! Sizzle CSS Selector Engine v2.2.1 http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license http://jquery.org/license + * + * Date: 2015-10-17 + */ + (function(window) { + + var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, + + // Local document vars + setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function( + a, b) { + if (a === b) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push = arr.push, slice = arr.slice, + // Use a stripped-down indexOf as it's faster than + // native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function(list, elem) { + var i = 0, len = list.length; + for (; i < len; i++) { + if (list[i] === elem) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: + // http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers + // [capture 5] or strings [capture 3 or capture + // 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in + // the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + ")\\)|)", + + // Leading and non-escaped trailing whitespace, + // capturing some non-whitespace characters preceding + // the latter + rwhitespace = new RegExp(whitespace + "+", "g"), rtrim = new RegExp("^" + whitespace + + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"), + + rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rcombinators = new RegExp("^" + + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), + + rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g"), + + rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), + + matchExpr = { + "ID" : new RegExp("^#(" + identifier + ")"), + "CLASS" : new RegExp("^\\.(" + identifier + ")"), + "TAG" : new RegExp("^(" + identifier + "|[*])"), + "ATTR" : new RegExp("^" + attributes), + "PSEUDO" : new RegExp("^" + pseudos), + "CHILD" : new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i"), + "bool" : new RegExp("^(?:" + booleans + ")$", "i"), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext" : new RegExp("^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") + }, + + rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS + // selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, rescape = /'|\\/g, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig"), funescape = function( + _, escaped, escapedWhitespace) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of + // +"0x" + return high !== high || escapedWhitespace ? escaped : high < 0 ? + // BMP codepoint + String.fromCharCode(high + 0x10000) : + // Supplemental Plane codepoint (surrogate + // pair) + String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission + // Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + + // Optimize for push.apply( _, NodeList ) + try { + push.apply((arr = slice.call(preferredDoc.childNodes)), preferredDoc.childNodes); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[preferredDoc.childNodes.length].nodeType; + } catch (e) { + push = { + apply : arr.length ? + + // Leverage slice if possible + function(target, els) { + push_native.apply(target, slice.call(els)); + } : + + // Support: IE<9 + // Otherwise append directly + function(target, els) { + var j = target.length, i = 0; + // Can't trust NodeList.length + while ((target[j++] = els[i++])) { + } + target.length = j - 1; + } + }; + } + + function Sizzle(selector, context, results, seed) { + var m, i, elem, nid, nidselect, match, groups, newSelector, newContext = context + && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to + // document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or + // context + if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 + && nodeType !== 11) { + + return results; + } + + // Try to shortcut find operations (as opposed to + // filters) in HTML documents + if (!seed) { + + if ((context ? context.ownerDocument || context : preferredDoc) !== document) { + setDocument(context); + } + context = context || document; + + if (documentIsHTML) { + + // If the selector is sufficiently simple, + // try using a "get*By*" DOM method + // (excepting DocumentFragment context, + // where the methods don't exist) + if (nodeType !== 11 && (match = rquickExpr.exec(selector))) { + + // ID selector + if ((m = match[1])) { + + // Document context + if (nodeType === 9) { + if ((elem = context.getElementById(m))) { + + // Support: IE, Opera, + // Webkit + // TODO: identify versions + // getElementById can match + // elements by name instead + // of ID + if (elem.id === m) { + results.push(elem); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match + // elements by name instead of + // ID + if (newContext && (elem = newContext.getElementById(m)) + && contains(context, elem) && elem.id === m) { + + results.push(elem); + return results; + } + } + + // Type selector + } else if (match[2]) { + push.apply(results, context.getElementsByTagName(selector)); + return results; + + // Class selector + } else if ((m = match[3]) && support.getElementsByClassName + && context.getElementsByClassName) { + + push.apply(results, context.getElementsByClassName(m)); + return results; + } + } + + // Take advantage of querySelectorAll + if (support.qsa && !compilerCache[selector + " "] + && (!rbuggyQSA || !rbuggyQSA.test(selector))) { + + if (nodeType !== 1) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element + // context, which is not what we + // want + // Thanks to Andrew Dupont for this + // workaround technique + // Support: IE <=8 + // Exclude object elements + } else if (context.nodeName.toLowerCase() !== "object") { + + // Capture the context ID, setting + // it first if necessary + if ((nid = context.getAttribute("id"))) { + nid = nid.replace(rescape, "\\$&"); + } else { + context.setAttribute("id", (nid = expando)); + } + + // Prefix every selector in the list + groups = tokenize(selector); + i = groups.length; + nidselect = ridentifier.test(nid) ? "#" + nid : "[id='" + nid + "']"; + while (i--) { + groups[i] = nidselect + " " + toSelector(groups[i]); + } + newSelector = groups.join(","); + + // Expand context for sibling + // selectors + newContext = rsibling.test(selector) && testContext(context.parentNode) + || context; + } + + if (newSelector) { + try { + push.apply(results, newContext.querySelectorAll(newSelector)); + return results; + } catch (qsaError) { + } finally { + if (nid === expando) { + context.removeAttribute("id"); + } + } + } + } + } + } + + // All others + return select(selector.replace(rtrim, "$1"), context, results, seed); + } + + /** + * Create key-value caches of limited size + * + * @returns {function(string, object)} Returns the + * Object data after storing it on itself with + * property name the (space-suffixed) string + * and (if the cache is larger than + * Expr.cacheLength) deleting the oldest entry + */ + function createCache() { + var keys = []; + + function cache(key, value) { + // Use (key + " ") to avoid collision with + // native prototype properties (see Issue #157) + if (keys.push(key + " ") > Expr.cacheLength) { + // Only keep the most recent entries + delete cache[keys.shift()]; + } + return (cache[key + " "] = value); + } + return cache; + } + + /** + * Mark a function for special use by Sizzle + * + * @param {Function} + * fn The function to mark + */ + function markFunction(fn) { + fn[expando] = true; + return fn; + } + + /** + * Support testing using an element + * + * @param {Function} + * fn Passed the created div and expects a + * boolean result + */ + function assert(fn) { + var div = document.createElement("div"); + + try { + return !!fn(div); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if (div.parentNode) { + div.parentNode.removeChild(div); + } + // release memory in IE + div = null; + } + } + + /** + * Adds the same handler for all of the specified attrs + * + * @param {String} + * attrs Pipe-separated list of attributes + * @param {Function} + * handler The method that will be applied + */ + function addHandle(attrs, handler) { + var arr = attrs.split("|"), i = arr.length; + + while (i--) { + Expr.attrHandle[arr[i]] = handler; + } + } + + /** + * Checks document order of two siblings + * + * @param {Element} + * a + * @param {Element} + * b + * @returns {Number} Returns less than 0 if a precedes + * b, greater than 0 if a follows b + */ + function siblingCheck(a, b) { + var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 + && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE); + + // Use IE sourceIndex if available on both nodes + if (diff) { + return diff; + } + + // Check if b follows a + if (cur) { + while ((cur = cur.nextSibling)) { + if (cur === b) { + return -1; + } + } + } + + return a ? 1 : -1; + } + + /** + * Returns a function to use in pseudos for input types + * + * @param {String} + * type + */ + function createInputPseudo(type) { + return function(elem) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; + } + + /** + * Returns a function to use in pseudos for buttons + * + * @param {String} + * type + */ + function createButtonPseudo(type) { + return function(elem) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; + } + + /** + * Returns a function to use in pseudos for positionals + * + * @param {Function} + * fn + */ + function createPositionalPseudo(fn) { + return markFunction(function(argument) { + argument = +argument; + return markFunction(function(seed, matches) { + var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; + + // Match elements found at the specified + // indexes + while (i--) { + if (seed[(j = matchIndexes[i])]) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); + } + + /** + * Checks a node for validity as a Sizzle context + * + * @param {Element|Object=} + * context + * @returns {Element|Object|Boolean} The input node if + * acceptable, otherwise a falsy value + */ + function testContext(context) { + return context && typeof context.getElementsByTagName !== "undefined" && context; + } + + // Expose support vars for convenience + support = Sizzle.support = {}; + + /** + * Detects XML nodes + * + * @param {Element|Object} + * elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML + * node + */ + isXML = Sizzle.isXML = function(elem) { + // documentElement is verified for cases where it + // doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; + }; + + /** + * Sets document-related variables once based on the + * current document + * + * @param {Element|Object} + * [doc] An element or document object to use + * to set the document + * @returns {Object} Returns the current document + */ + setDocument = Sizzle.setDocument = function(node) { + var hasCompare, parent, doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already + // selected + if (doc === document || doc.nodeType !== 9 || !doc.documentElement) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML(document); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws + // "permission denied" errors (jQuery #13936) + if ((parent = document.defaultView) && parent.top !== parent) { + // Support: IE 11 + if (parent.addEventListener) { + parent.addEventListener("unload", unloadHandler, false); + + // Support: IE 9 - 10 only + } else if (parent.attachEvent) { + parent.attachEvent("onunload", unloadHandler); + } + } + + /* + * Attributes + * ---------------------------------------------------------------------- + */ + + // Support: IE<8 + // Verify that getAttribute really returns + // attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function(div) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /*************************************************** + * getElement(s)By + * ---------------------------------------------------------------------- + */ + + // Check if getElementsByTagName("*") returns only + // elements + support.getElementsByTagName = assert(function(div) { + div.appendChild(document.createComment("")); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test(document.getElementsByClassName); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up + // programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function(div) { + docElem.appendChild(div).id = expando; + return !document.getElementsByName || !document.getElementsByName(expando).length; + }); + + // ID find and filter + if (support.getById) { + Expr.find["ID"] = function(id, context) { + if (typeof context.getElementById !== "undefined" && documentIsHTML) { + var m = context.getElementById(id); + return m ? [ m ] : []; + } + }; + Expr.filter["ID"] = function(id) { + var attrId = id.replace(runescape, funescape); + return function(elem) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find + // shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function(id) { + var attrId = id.replace(runescape, funescape); + return function(elem) { + var node = typeof elem.getAttributeNode !== "undefined" + && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? function(tag, context) { + if (typeof context.getElementsByTagName !== "undefined") { + return context.getElementsByTagName(tag); + + // DocumentFragment nodes don't have gEBTN + } else if (support.qsa) { + return context.querySelectorAll(tag); + } + } : + + function(tag, context) { + var elem, tmp = [], i = 0, + // By happy coincidence, a (broken) + // gEBTN appears on DocumentFragment + // nodes too + results = context.getElementsByTagName(tag); + + // Filter out possible comments + if (tag === "*") { + while ((elem = results[i++])) { + if (elem.nodeType === 1) { + tmp.push(elem); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function(className, context) { + if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) { + return context.getElementsByClassName(className); + } + }; + + /* + * QSA/matchesSelector + * ---------------------------------------------------------------------- + */ + + // QSA and matchesSelector support + // matchesSelector(:active) reports false when true + // (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that + // throws an error + // whenever `document.activeElement` is accessed on + // an iframe + // So, we allow :focus to pass through QSA all the + // time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ((support.qsa = rnative.test(document.querySelectorAll))) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function(div) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not + // explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild(div).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty + // strings follow ^= or $= or *= + // The test attribute must be unknown in + // Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if (div.querySelectorAll("[msallowcapture^='']").length) { + rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")"); + } + + // Support: IE8 + // Boolean attributes and "value" are not + // treated correctly + if (!div.querySelectorAll("[selected]").length) { + rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"); + } + + // Support: Chrome<29, Android<4.4, + // Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if (!div.querySelectorAll("[id~=" + expando + "-]").length) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return + // selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see + // later tests + if (!div.querySelectorAll(":checked").length) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator + // selector` fails + if (!div.querySelectorAll("a#" + expando + "+*").length) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function(div) { + // Support: Windows 8 Native Apps + // The type and name attributes are + // restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute("type", "hidden"); + div.appendChild(input).setAttribute("name", "D"); + + // Support: IE8 + // Enforce case-sensitivity of name + // attribute + if (div.querySelectorAll("[name=d]").length) { + rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?="); + } + + // FF 3.5 - :enabled/:disabled and hidden + // elements (hidden elements are still + // enabled) + // IE8 throws error here and will not see + // later tests + if (!div.querySelectorAll(":enabled").length) { + rbuggyQSA.push(":enabled", ":disabled"); + } + + // Opera 10-11 does not throw on post-comma + // invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ((support.matchesSelector = rnative.test((matches = docElem.matches + || docElem.webkitMatchesSelector || docElem.mozMatchesSelector + || docElem.oMatchesSelector || docElem.msMatchesSelector)))) { + + assert(function(div) { + // Check to see if it's possible to do + // matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call(div, "div"); + + // This should fail with an exception + // Gecko does not error, returns false + // instead + matches.call(div, "[s!='']:x"); + rbuggyMatches.push("!=", pseudos); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")); + rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")); + + /* + * Contains + * ---------------------------------------------------------------------- + */ + hasCompare = rnative.test(docElem.compareDocumentPosition); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test(docElem.contains) ? function(a, b) { + var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; + return a === bup + || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) + : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); + } : function(a, b) { + if (b) { + while ((b = b.parentNode)) { + if (b === a) { + return true; + } + } + } + return false; + }; + + /* + * Sorting + * ---------------------------------------------------------------------- + */ + + // Document order sorting + sortOrder = hasCompare ? function(a, b) { + + // Flag for duplicate removal + if (a === b) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input + // has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if (compare) { + return compare; + } + + // Calculate position if both inputs belong to + // the same document + compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a + .compareDocumentPosition(b) : + + // Otherwise we know they are + // disconnected + 1; + + // Disconnected nodes + if (compare & 1 || (!support.sortDetached && b.compareDocumentPosition(a) === compare)) { + + // Choose the first element that is related + // to our preferred document + if (a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a)) { + return -1; + } + if (b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b)) { + return 1; + } + + // Maintain original order + return sortInput ? (indexOf(sortInput, a) - indexOf(sortInput, b)) : 0; + } + + return compare & 4 ? -1 : 1; + } + : function(a, b) { + // Exit early if the nodes are identical + if (a === b) { + hasDuplicate = true; + return 0; + } + + var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [ a ], bp = [ b ]; + + // Parentless nodes are either documents + // or disconnected + if (!aup || !bup) { + return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 + : sortInput ? (indexOf(sortInput, a) - indexOf(sortInput, b)) : 0; + + // If the nodes are siblings, we can + // do a quick check + } else if (aup === bup) { + return siblingCheck(a, b); + } + + // Otherwise we need full lists of their + // ancestors for comparison + cur = a; + while ((cur = cur.parentNode)) { + ap.unshift(cur); + } + cur = b; + while ((cur = cur.parentNode)) { + bp.unshift(cur); + } + + // Walk down the tree looking for a + // discrepancy + while (ap[i] === bp[i]) { + i++; + } + + return i ? + // Do a sibling check if the nodes have + // a common ancestor + siblingCheck(ap[i], bp[i]) : + + // Otherwise nodes in our document sort + // first + ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; + }; + + return document; + }; + + Sizzle.matches = function(expr, elements) { + return Sizzle(expr, null, null, elements); + }; + + Sizzle.matchesSelector = function(elem, expr) { + // Set document vars if needed + if ((elem.ownerDocument || elem) !== document) { + setDocument(elem); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace(rattributeQuotes, "='$1']"); + + if (support.matchesSelector && documentIsHTML && !compilerCache[expr + " "] + && (!rbuggyMatches || !rbuggyMatches.test(expr)) + && (!rbuggyQSA || !rbuggyQSA.test(expr))) { + + try { + var ret = matches.call(elem, expr); + + // IE 9's matchesSelector returns false on + // disconnected nodes + if (ret || support.disconnectedMatch || + // As well, disconnected nodes are said to + // be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11) { + return ret; + } + } catch (e) { + } + } + + return Sizzle(expr, document, null, [ elem ]).length > 0; + }; + + Sizzle.contains = function(context, elem) { + // Set document vars if needed + if ((context.ownerDocument || context) !== document) { + setDocument(context); + } + return contains(context, elem); + }; + + Sizzle.attr = function(elem, name) { + // Set document vars if needed + if ((elem.ownerDocument || elem) !== document) { + setDocument(elem); + } + + var fn = Expr.attrHandle[name.toLowerCase()], + // Don't get fooled by Object.prototype properties + // (jQuery #13807) + val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, + !documentIsHTML) : undefined; + + return val !== undefined ? val : support.attributes || !documentIsHTML ? elem + .getAttribute(name) + : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; + }; + + Sizzle.error = function(msg) { + throw new Error("Syntax error, unrecognized expression: " + msg); + }; + + /** + * Document sorting and removing duplicates + * + * @param {ArrayLike} + * results + */ + Sizzle.uniqueSort = function(results) { + var elem, duplicates = [], j = 0, i = 0; + + // Unless we *know* we can detect duplicates, assume + // their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice(0); + results.sort(sortOrder); + + if (hasDuplicate) { + while ((elem = results[i++])) { + if (elem === results[i]) { + j = duplicates.push(i); + } + } + while (j--) { + results.splice(duplicates[j], 1); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; + }; + + /** + * Utility function for retrieving the text value of an + * array of DOM nodes + * + * @param {Array|Element} + * elem + */ + getText = Sizzle.getText = function(elem) { + var node, ret = "", i = 0, nodeType = elem.nodeType; + + if (!nodeType) { + // If no nodeType, this is expected to be an + // array + while ((node = elem[i++])) { + // Do not traverse comment nodes + ret += getText(node); + } + } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) { + // Use textContent for elements + // innerText usage removed for consistency of + // new lines (jQuery #11153) + if (typeof elem.textContent === "string") { + return elem.textContent; + } else { + // Traverse its children + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText(elem); + } + } + } else if (nodeType === 3 || nodeType === 4) { + return elem.nodeValue; + } + // Do not include comment or processing instruction + // nodes + + return ret; + }; + + Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength : 50, + + createPseudo : markFunction, + + match : matchExpr, + + attrHandle : {}, + + find : {}, + + relative : { + ">" : { + dir : "parentNode", + first : true + }, + " " : { + dir : "parentNode" + }, + "+" : { + dir : "previousSibling", + first : true + }, + "~" : { + dir : "previousSibling" + } + }, + + preFilter : { + "ATTR" : function(match) { + match[1] = match[1].replace(runescape, funescape); + + // Move the given value to match[3] whether + // quoted or unquoted + match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape); + + if (match[2] === "~=") { + match[3] = " " + match[3] + " "; + } + + return match.slice(0, 4); + }, + + "CHILD" : function(match) { + /* + * matches from matchExpr["CHILD"] 1 type + * (only|nth|...) 2 what (child|of-type) 3 + * argument + * (even|odd|\d*|\d*n([+-]\d+)?|...) 4 + * xn-component of xn+y argument + * ([+-]?\d*n|) 5 sign of xn-component 6 x + * of xn-component 7 sign of y-component 8 y + * of y-component + */ + match[1] = match[1].toLowerCase(); + + if (match[1].slice(0, 3) === "nth") { + // nth-* requires argument + if (!match[3]) { + Sizzle.error(match[0]); + } + + // numeric x and y parameters for + // Expr.filter.CHILD + // remember that false/true cast + // respectively to 0/1 + match[4] = +(match[4] ? match[5] + (match[6] || 1) + : 2 * (match[3] === "even" || match[3] === "odd")); + match[5] = +((match[7] + match[8]) || match[3] === "odd"); + + // other types prohibit arguments + } else if (match[3]) { + Sizzle.error(match[0]); + } + + return match; + }, + + "PSEUDO" : function(match) { + var excess, unquoted = !match[6] && match[2]; + + if (matchExpr["CHILD"].test(match[0])) { + return null; + } + + // Accept quoted arguments as-is + if (match[3]) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted + // arguments + } else if (unquoted && rpseudo.test(unquoted) && + // Get excess from tokenize + // (recursively) + (excess = tokenize(unquoted, true)) && + // advance to the next closing + // parenthesis + (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) { + + // excess is a negative index + match[0] = match[0].slice(0, excess); + match[2] = unquoted.slice(0, excess); + } + + // Return only captures needed by the pseudo + // filter method (type and argument) + return match.slice(0, 3); + } + }, + + filter : { + + "TAG" : function(nodeNameSelector) { + var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); + return nodeNameSelector === "*" ? function() { + return true; + } : function(elem) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS" : function(className) { + var pattern = classCache[className + " "]; + + return pattern + || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + + whitespace + "|$)")) + && classCache(className, function(elem) { + return pattern.test(typeof elem.className === "string" + && elem.className || typeof elem.getAttribute !== "undefined" + && elem.getAttribute("class") || ""); + }); + }, + + "ATTR" : function(name, operator, check) { + return function(elem) { + var result = Sizzle.attr(elem, name); + + if (result == null) { + return operator === "!="; + } + if (!operator) { + return true; + } + + result += ""; + + return operator === "=" ? result === check + : operator === "!=" ? result !== check + : operator === "^=" ? check && result.indexOf(check) === 0 + : operator === "*=" ? check + && result.indexOf(check) > -1 + : operator === "$=" ? check + && result.slice(-check.length) === check + : operator === "~=" ? (" " + + result.replace(rwhitespace, + " ") + " ") + .indexOf(check) > -1 + : operator === "|=" ? result === check + || result + .slice( + 0, + check.length + 1) === check + + "-" + : false; + }; + }, + + "CHILD" : function(type, what, argument, first, last) { + var simple = type.slice(0, 3) !== "nth", forward = type.slice(-4) !== "last", ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function(elem) { + return !!elem.parentNode; + } + : + + function(elem, context, xml) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" + : "previousSibling", parent = elem.parentNode, name = ofType + && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; + + if (parent) { + + // :(first|last|only)-(child|of-type) + if (simple) { + while (dir) { + node = elem; + while ((node = node[dir])) { + if (ofType ? node.nodeName.toLowerCase() === name + : node.nodeType === 1) { + + return false; + } + } + // Reverse direction + // for :only-* (if + // we haven't yet + // done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) + // stores cache data on + // `parent` + if (forward && useCache) { + + // Seek `elem` from a + // previously-cached + // index + + // ...in a gzip-friendly + // way + node = parent; + outerCache = node[expando] || (node[expando] = {}); + + // Support: IE <9 only + // Defend against cloned + // attroperties (jQuery + // gh-1709) + uniqueCache = outerCache[node.uniqueID] + || (outerCache[node.uniqueID] = {}); + + cache = uniqueCache[type] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = nodeIndex && cache[2]; + node = nodeIndex && parent.childNodes[nodeIndex]; + + while ((node = ++nodeIndex && node && node[dir] || + + // Fallback to + // seeking + // `elem` from + // the start + (diff = nodeIndex = 0) || start.pop())) { + + // When found, cache + // indexes on + // `parent` and + // break + if (node.nodeType === 1 && ++diff && node === elem) { + uniqueCache[type] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached + // element index if + // available + if (useCache) { + // ...in a + // gzip-friendly way + node = elem; + outerCache = node[expando] || (node[expando] = {}); + + // Support: IE <9 + // only + // Defend against + // cloned + // attroperties + // (jQuery gh-1709) + uniqueCache = outerCache[node.uniqueID] + || (outerCache[node.uniqueID] = {}); + + cache = uniqueCache[type] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or + // :nth-last-child(...) + // or + // :nth(-last)?-of-type(...) + if (diff === false) { + // Use the same loop + // as above to seek + // `elem` from the + // start + while ((node = ++nodeIndex && node && node[dir] + || (diff = nodeIndex = 0) || start.pop())) { + + if ((ofType ? node.nodeName.toLowerCase() === name + : node.nodeType === 1) + && ++diff) { + + // Cache the + // index of + // each + // encountered + // element + if (useCache) { + outerCache = node[expando] + || (node[expando] = {}); + + // Support: + // IE <9 + // only + // Defend + // against + // cloned + // attroperties + // (jQuery + // gh-1709) + uniqueCache = outerCache[node.uniqueID] + || (outerCache[node.uniqueID] = {}); + + uniqueCache[type] = [ dirruns, diff ]; + } + + if (node === elem) { + break; + } + } + } + } + } + + // Incorporate the offset, + // then check against cycle + // size + diff -= last; + return diff === first || (diff % first === 0 && diff / first >= 0); + } + }; + }, + + "PSEUDO" : function(pseudo, argument) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case + // custom pseudos are added with uppercase + // letters + // Remember that setFilters inherits from + // pseudos + var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] + || Sizzle.error("unsupported pseudo: " + pseudo); + + // The user may use createPseudo to indicate + // that + // arguments are needed to create the filter + // function + // just as Sizzle does + if (fn[expando]) { + return fn(argument); + } + + // But maintain support for old signatures + if (fn.length > 1) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function( + seed, matches) { + var idx, matched = fn(seed, argument), i = matched.length; + while (i--) { + idx = indexOf(seed, matched[i]); + seed[idx] = !(matches[idx] = matched[i]); + } + }) + : function(elem) { + return fn(elem, 0, args); + }; + } + + return fn; + } + }, + + pseudos : { + // Potentially complex pseudos + "not" : markFunction(function(selector) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], results = [], matcher = compile(selector.replace(rtrim, "$1")); + + return matcher[expando] ? markFunction(function(seed, matches, context, xml) { + var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; + + // Match elements unmatched by `matcher` + while (i--) { + if ((elem = unmatched[i])) { + seed[i] = !(matches[i] = elem); + } + } + }) : function(elem, context, xml) { + input[0] = elem; + matcher(input, null, xml, results); + // Don't keep the element (issue + // #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has" : markFunction(function(selector) { + return function(elem) { + return Sizzle(selector, elem).length > 0; + }; + }), + + "contains" : markFunction(function(text) { + text = text.replace(runescape, funescape); + return function(elem) { + return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1; + }; + }), + + // "Whether an element is represented by a + // :lang() selector + // is based solely on the element's language + // value + // being equal to the identifier C, + // or beginning with the identifier C + // immediately followed by "-". + // The matching of C against the element's + // language value is performed + // case-insensitively. + // The identifier C does not have to be a valid + // language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang" : markFunction(function(lang) { + // lang value must be a valid identifier + if (!ridentifier.test(lang || "")) { + Sizzle.error("unsupported lang: " + lang); + } + lang = lang.replace(runescape, funescape).toLowerCase(); + return function(elem) { + var elemLang; + do { + if ((elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") + || elem.getAttribute("lang"))) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf(lang + "-") === 0; + } + } while ((elem = elem.parentNode) && elem.nodeType === 1); + return false; + }; + }), + + // Miscellaneous + "target" : function(elem) { + var hash = window.location && window.location.hash; + return hash && hash.slice(1) === elem.id; + }, + + "root" : function(elem) { + return elem === docElem; + }, + + "focus" : function(elem) { + return elem === document.activeElement + && (!document.hasFocus || document.hasFocus()) + && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled" : function(elem) { + return elem.disabled === false; + }, + + "disabled" : function(elem) { + return elem.disabled === true; + }, + + "checked" : function(elem) { + // In CSS3, :checked should return both + // checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) + || (nodeName === "option" && !!elem.selected); + }, + + "selected" : function(elem) { + // Accessing this property makes + // selected-by-default + // options in Safari work properly + if (elem.parentNode) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty" : function(elem) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or + // content nodes (text: 3; cdata: 4; entity + // ref: 5), + // but not by others (comment: 8; processing + // instruction: 7; etc.) + // nodeType < 6 works because attributes (2) + // do not appear as children + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + if (elem.nodeType < 6) { + return false; + } + } + return true; + }, + + "parent" : function(elem) { + return !Expr.pseudos["empty"](elem); + }, + + // Element/input types + "header" : function(elem) { + return rheader.test(elem.nodeName); + }, + + "input" : function(elem) { + return rinputs.test(elem.nodeName); + }, + + "button" : function(elem) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text" : function(elem) { + var attr; + return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., + // "search") appear with elem.type + // === "text" + ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text"); + }, + + // Position-in-collection + "first" : createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last" : createPositionalPseudo(function(matchIndexes, length) { + return [ length - 1 ]; + }), + + "eq" : createPositionalPseudo(function(matchIndexes, length, argument) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even" : createPositionalPseudo(function(matchIndexes, length) { + var i = 0; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + + "odd" : createPositionalPseudo(function(matchIndexes, length) { + var i = 1; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + + "lt" : createPositionalPseudo(function(matchIndexes, length, argument) { + var i = argument < 0 ? argument + length : argument; + for (; --i >= 0;) { + matchIndexes.push(i); + } + return matchIndexes; + }), + + "gt" : createPositionalPseudo(function(matchIndexes, length, argument) { + var i = argument < 0 ? argument + length : argument; + for (; ++i < length;) { + matchIndexes.push(i); + } + return matchIndexes; + }) + } + }; + + Expr.pseudos["nth"] = Expr.pseudos["eq"]; + + // Add button/input type pseudos + for (i in { + radio : true, + checkbox : true, + file : true, + password : true, + image : true + }) { + Expr.pseudos[i] = createInputPseudo(i); + } + for (i in { + submit : true, + reset : true + }) { + Expr.pseudos[i] = createButtonPseudo(i); + } + + // Easy API for creating new setFilters + function setFilters() { + } + setFilters.prototype = Expr.filters = Expr.pseudos; + Expr.setFilters = new setFilters(); + + tokenize = Sizzle.tokenize = function(selector, parseOnly) { + var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + + " "]; + + if (cached) { + return parseOnly ? 0 : cached.slice(0); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while (soFar) { + + // Comma and first run + if (!matched || (match = rcomma.exec(soFar))) { + if (match) { + // Don't consume trailing commas as + // valid + soFar = soFar.slice(match[0].length) || soFar; + } + groups.push((tokens = [])); + } + + matched = false; + + // Combinators + if ((match = rcombinators.exec(soFar))) { + matched = match.shift(); + tokens.push({ + value : matched, + // Cast descendant combinators to space + type : match[0].replace(rtrim, " ") + }); + soFar = soFar.slice(matched.length); + } + + // Filters + for (type in Expr.filter) { + if ((match = matchExpr[type].exec(soFar)) + && (!preFilters[type] || (match = preFilters[type](match)))) { + matched = match.shift(); + tokens.push({ + value : matched, + type : type, + matches : match + }); + soFar = soFar.slice(matched.length); + } + } + + if (!matched) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : + // Cache the tokens + tokenCache(selector, groups).slice(0); + }; + + function toSelector(tokens) { + var i = 0, len = tokens.length, selector = ""; + for (; i < len; i++) { + selector += tokens[i].value; + } + return selector; + } + + function addCombinator(matcher, combinator, base) { + var dir = combinator.dir, checkNonElements = base && dir === "parentNode", doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function(elem, context, xml) { + while ((elem = elem[dir])) { + if (elem.nodeType === 1 || checkNonElements) { + return matcher(elem, context, xml); + } + } + } + : + + // Check against all ancestor/preceding + // elements + function(elem, context, xml) { + var oldCache, uniqueCache, outerCache, newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML + // nodes, so they don't benefit from + // combinator caching + if (xml) { + while ((elem = elem[dir])) { + if (elem.nodeType === 1 || checkNonElements) { + if (matcher(elem, context, xml)) { + return true; + } + } + } + } else { + while ((elem = elem[dir])) { + if (elem.nodeType === 1 || checkNonElements) { + outerCache = elem[expando] || (elem[expando] = {}); + + // Support: IE <9 only + // Defend against cloned + // attroperties (jQuery + // gh-1709) + uniqueCache = outerCache[elem.uniqueID] + || (outerCache[elem.uniqueID] = {}); + + if ((oldCache = uniqueCache[dir]) && oldCache[0] === dirruns + && oldCache[1] === doneName) { + + // Assign to newCache so + // results + // back-propagate to + // previous elements + return (newCache[2] = oldCache[2]); + } else { + // Reuse newcache so + // results + // back-propagate to + // previous elements + uniqueCache[dir] = newCache; + + // A match means we're + // done; a fail means we + // have to keep checking + if ((newCache[2] = matcher(elem, context, xml))) { + return true; + } + } + } + } + } + }; + } + + function elementMatcher(matchers) { + return matchers.length > 1 ? function(elem, context, xml) { + var i = matchers.length; + while (i--) { + if (!matchers[i](elem, context, xml)) { + return false; + } + } + return true; + } : matchers[0]; + } + + function multipleContexts(selector, contexts, results) { + var i = 0, len = contexts.length; + for (; i < len; i++) { + Sizzle(selector, contexts[i], results); + } + return results; + } + + function condense(unmatched, map, filter, context, xml) { + var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; + + for (; i < len; i++) { + if ((elem = unmatched[i])) { + if (!filter || filter(elem, context, xml)) { + newUnmatched.push(elem); + if (mapped) { + map.push(i); + } + } + } + } + + return newUnmatched; + } + + function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { + if (postFilter && !postFilter[expando]) { + postFilter = setMatcher(postFilter); + } + if (postFinder && !postFinder[expando]) { + postFinder = setMatcher(postFinder, postSelector); + } + return markFunction(function(seed, results, context, xml) { + var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, + + // Get initial elements from seed or context + elems = seed + || multipleContexts(selector || "*", context.nodeType ? [ context ] : context, + []), + + // Prefilter to get matcher input, preserving a + // map for seed-results synchronization + matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, + context, xml) : elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or + // non-seed postFilter or preexisting results, + postFinder || (seed ? preFilter : preexisting || postFilter) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : matcherIn; + + // Find primary matches + if (matcher) { + matcher(matcherIn, matcherOut, context, xml); + } + + // Apply postFilter + if (postFilter) { + temp = condense(matcherOut, postMap); + postFilter(temp, [], context, xml); + + // Un-match failing elements by moving them + // back to matcherIn + i = temp.length; + while (i--) { + if ((elem = temp[i])) { + matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem); + } + } + } + + if (seed) { + if (postFinder || preFilter) { + if (postFinder) { + // Get the final matcherOut by + // condensing this intermediate into + // postFinder contexts + temp = []; + i = matcherOut.length; + while (i--) { + if ((elem = matcherOut[i])) { + // Restore matcherIn since + // elem is not yet a final + // match + temp.push((matcherIn[i] = elem)); + } + } + postFinder(null, (matcherOut = []), temp, xml); + } + + // Move matched elements from seed to + // results to keep them synchronized + i = matcherOut.length; + while (i--) { + if ((elem = matcherOut[i]) + && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through + // postFinder if defined + } else { + matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, + matcherOut.length) : matcherOut); + if (postFinder) { + postFinder(null, results, matcherOut, xml); + } else { + push.apply(results, matcherOut); + } + } + }); + } + + function matcherFromTokens(tokens) { + var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative + || Expr.relative[" "], i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements + // are reachable from top-level context(s) + matchContext = addCombinator(function(elem) { + return elem === checkContext; + }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) { + return indexOf(checkContext, elem) > -1; + }, implicitRelative, true), matchers = [ function(elem, context, xml) { + var ret = (!leadingRelative && (xml || context !== outermostContext)) + || ((checkContext = context).nodeType ? matchContext(elem, context, xml) + : matchAnyContext(elem, context, xml)); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for (; i < len; i++) { + if ((matcher = Expr.relative[tokens[i].type])) { + matchers = [ addCombinator(elementMatcher(matchers), matcher) ]; + } else { + matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); + + // Return special upon seeing a positional + // matcher + if (matcher[expando]) { + // Find the next relative operator (if + // any) for proper handling + j = ++i; + for (; j < len; j++) { + if (Expr.relative[tokens[j].type]) { + break; + } + } + return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( + // If the + // preceding + // token was a + // descendant + // combinator, + // insert an + // implicit + // any-element + // `*` + tokens.slice(0, i - 1).concat({ + value : tokens[i - 2].type === " " ? "*" : "" + })).replace(rtrim, "$1"), matcher, i < j + && matcherFromTokens(tokens.slice(i, j)), j < len + && matcherFromTokens((tokens = tokens.slice(j))), j < len + && toSelector(tokens)); + } + matchers.push(matcher); + } + } + + return elementMatcher(matchers); + } + + function matcherFromGroupMatchers(elementMatchers, setMatchers) { + var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function( + seed, context, xml, results, outermost) { + var elem, j, matcher, matchedCount = 0, i = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, + // We must always have either seed elements or + // outermost context + elems = seed || byElement && Expr.find["TAG"]("*", outermost), + // Use integer dirruns iff this is the outermost + // matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), len = elems.length; + + if (outermost) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly + // to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; + // Safari: ) matching elements by id + for (; i !== len && (elem = elems[i]) != null; i++) { + if (byElement && elem) { + j = 0; + if (!context && elem.ownerDocument !== document) { + setDocument(elem); + xml = !documentIsHTML; + } + while ((matcher = elementMatchers[j++])) { + if (matcher(elem, context || document, xml)) { + results.push(elem); + break; + } + } + if (outermost) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if (bySet) { + // They will have gone through all + // possible matchers + if ((elem = !matcher && elem)) { + matchedCount--; + } + + // Lengthen the array for every element, + // matched or not + if (seed) { + unmatched.push(elem); + } + } + } + + // `i` is now the count of elements visited + // above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no + // unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ + // elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` + // allows `i` to remain a string only in that + // case, which will result in a "00" + // `matchedCount` that differs from `i` but is + // also + // numerically zero. + if (bySet && i !== matchedCount) { + j = 0; + while ((matcher = setMatchers[j++])) { + matcher(unmatched, setMatched, context, xml); + } + + if (seed) { + // Reintegrate element matches to + // eliminate the need for sorting + if (matchedCount > 0) { + while (i--) { + if (!(unmatched[i] || setMatched[i])) { + setMatched[i] = pop.call(results); + } + } + } + + // Discard index placeholder values to + // get only actual matches + setMatched = condense(setMatched); + } + + // Add matches to results + push.apply(results, setMatched); + + // Seedless set matches succeeding multiple + // successful matchers stipulate sorting + if (outermost && !seed && setMatched.length > 0 + && (matchedCount + setMatchers.length) > 1) { + + Sizzle.uniqueSort(results); + } + } + + // Override manipulation of globals by nested + // matchers + if (outermost) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? markFunction(superMatcher) : superMatcher; + } + + compile = Sizzle.compile = function(selector, match /* + * Internal + * Use + * Only + */) { + var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "]; + + if (!cached) { + // Generate a function of recursive functions + // that can be used to check each element + if (!match) { + match = tokenize(selector); + } + i = match.length; + while (i--) { + cached = matcherFromTokens(match[i]); + if (cached[expando]) { + setMatchers.push(cached); + } else { + elementMatchers.push(cached); + } + } + + // Cache the compiled function + cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; + }; + + /** + * A low-level selection function that works with + * Sizzle's compiled selector functions + * + * @param {String|Function} + * selector A selector or a pre-compiled + * selector function built with + * Sizzle.compile + * @param {Element} + * context + * @param {Array} + * [results] + * @param {Array} + * [seed] A set of elements to match against + */ + select = Sizzle.select = function(selector, context, results, seed) { + var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed + && tokenize((selector = compiled.selector || selector)); + + results = results || []; + + // Try to minimize operations if there is only one + // selector in the list and no seed + // (the latter of which guarantees us context) + if (match.length === 1) { + + // Reduce context if the leading compound + // selector is an ID + tokens = match[0] = match[0].slice(0); + if (tokens.length > 2 && (token = tokens[0]).type === "ID" && support.getById + && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { + + context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0]; + if (!context) { + return results; + + // Precompiled matchers will still + // verify ancestry, so step up a level + } else if (compiled) { + context = context.parentNode; + } + + selector = selector.slice(tokens.shift().value.length); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test(selector) ? 0 : tokens.length; + while (i--) { + token = tokens[i]; + + // Abort if we hit a combinator + if (Expr.relative[(type = token.type)]) { + break; + } + if ((find = Expr.find[type])) { + // Search, expanding context for leading + // sibling combinators + if ((seed = find(token.matches[0].replace(runescape, funescape), rsibling + .test(tokens[0].type) + && testContext(context.parentNode) || context))) { + + // If seed is empty or no tokens + // remain, we can return early + tokens.splice(i, 1); + selector = seed.length && toSelector(tokens); + if (!selector) { + push.apply(results, seed); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one + // is not provided + // Provide `match` to avoid retokenization if we + // modified the selector above + (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context + || rsibling.test(selector) && testContext(context.parentNode) || context); + return results; + }; + + // One-time assignments + + // Sort stability + support.sortStable = expando.split("").sort(sortOrder).join("") === expando; + + // Support: Chrome 14-35+ + // Always assume duplicates if they aren't passed to the + // comparison function + support.detectDuplicates = !!hasDuplicate; + + // Initialize against the default document + setDocument(); + + // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 + // (fixed in Chrome 27) + // Detached nodes confoundingly follow *each other* + support.sortDetached = assert(function(div1) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition(document.createElement("div")) & 1; + }); + + // Support: IE<8 + // Prevent attribute/property "interpolation" + // http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx + if (!assert(function(div) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#"; + })) { + addHandle("type|href|height|width", function(elem, name, isXML) { + if (!isXML) { + return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2); + } + }); + } + + // Support: IE<9 + // Use defaultValue in place of getAttribute("value") + if (!support.attributes || !assert(function(div) { + div.innerHTML = ""; + div.firstChild.setAttribute("value", ""); + return div.firstChild.getAttribute("value") === ""; + })) { + addHandle("value", function(elem, name, isXML) { + if (!isXML && elem.nodeName.toLowerCase() === "input") { + return elem.defaultValue; + } + }); + } + + // Support: IE<9 + // Use getAttributeNode to fetch booleans when + // getAttribute lies + if (!assert(function(div) { + return div.getAttribute("disabled") == null; + })) { + addHandle(booleans, function(elem, name, isXML) { + var val; + if (!isXML) { + return elem[name] === true ? name.toLowerCase() : (val = elem + .getAttributeNode(name)) + && val.specified ? val.value : null; + } + }); + } + + return Sizzle; + + })(window); + + jQuery.find = Sizzle; + jQuery.expr = Sizzle.selectors; + jQuery.expr[":"] = jQuery.expr.pseudos; + jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; + jQuery.text = Sizzle.getText; + jQuery.isXMLDoc = Sizzle.isXML; + jQuery.contains = Sizzle.contains; + + var dir = function(elem, dir, until) { + var matched = [], truncate = until !== undefined; + + while ((elem = elem[dir]) && elem.nodeType !== 9) { + if (elem.nodeType === 1) { + if (truncate && jQuery(elem).is(until)) { + break; + } + matched.push(elem); + } + } + return matched; + }; + + var siblings = function(n, elem) { + var matched = []; + + for (; n; n = n.nextSibling) { + if (n.nodeType === 1 && n !== elem) { + matched.push(n); + } + } + + return matched; + }; + + var rneedsContext = jQuery.expr.match.needsContext; + + var rsingleTag = (/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/); + + var risSimple = /^.[^:#\[\.,]*$/; + + // Implement the identical functionality for filter and not + function winnow(elements, qualifier, not) { + if (jQuery.isFunction(qualifier)) { + return jQuery.grep(elements, function(elem, i) { + /* jshint -W018 */ + return !!qualifier.call(elem, i, elem) !== not; + }); + + } + + if (qualifier.nodeType) { + return jQuery.grep(elements, function(elem) { + return (elem === qualifier) !== not; + }); + + } + + if (typeof qualifier === "string") { + if (risSimple.test(qualifier)) { + return jQuery.filter(qualifier, elements, not); + } + + qualifier = jQuery.filter(qualifier, elements); + } + + return jQuery.grep(elements, function(elem) { + return (jQuery.inArray(elem, qualifier) > -1) !== not; + }); + } + + jQuery.filter = function(expr, elems, not) { + var elem = elems[0]; + + if (not) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector(elem, expr) ? [ elem ] + : [] + : jQuery.find.matches(expr, jQuery.grep(elems, function(elem) { + return elem.nodeType === 1; + })); + }; + + jQuery.fn.extend({ + find : function(selector) { + var i, ret = [], self = this, len = self.length; + + if (typeof selector !== "string") { + return this.pushStack(jQuery(selector).filter(function() { + for (i = 0; i < len; i++) { + if (jQuery.contains(self[i], this)) { + return true; + } + } + })); + } + + for (i = 0; i < len; i++) { + jQuery.find(selector, self[i], ret); + } + + // Needed because $( selector, context ) + // becomes $( context ).find( selector ) + ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter : function(selector) { + return this.pushStack(winnow(this, selector || [], false)); + }, + not : function(selector) { + return this.pushStack(winnow(this, selector || [], true)); + }, + is : function(selector) { + return !!winnow(this, + + // If this is a positional/relative + // selector, check membership in the + // returned set + // so $("p:first").is("p:last") + // won't return true for a doc with + // two "p". + typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector + || [], false).length; + } + }); + + // Initialize a jQuery object + + // A central reference to the root jQuery(document) + var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash + // (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function(selector, context, root) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if (!selector) { + return this; + } + + // init accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if (typeof selector === "string") { + if (selector.charAt(0) === "<" && selector.charAt(selector.length - 1) === ">" + && selector.length >= 3) { + + // Assume that strings that start and end with + // <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec(selector); + } + + // Match html or make sure no context is specified + // for #id + if (match && (match[1] || !context)) { + + // HANDLE: $(html) -> $(array) + if (match[1]) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if + // parseHTML is not present + jQuery.merge(this, jQuery.parseHTML(match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true)); + + // HANDLE: $(html, props) + if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) { + for (match in context) { + + // Properties of context are called + // as methods if possible + if (jQuery.isFunction(this[match])) { + this[match](context[match]); + + // ...and otherwise set as + // attributes + } else { + this.attr(match, context[match]); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById(match[2]); + + // Check parentNode to catch when Blackberry + // 4.6 returns + // nodes that are no longer in the document + // #6963 + if (elem && elem.parentNode) { + + // Handle the case where IE and Opera + // return items + // by name instead of ID + if (elem.id !== match[2]) { + return rootjQuery.find(selector); + } + + // Otherwise, we inject the element + // directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if (!context || context.jquery) { + return (context || root).find(selector); + + // HANDLE: $(expr, context) + // (which is just equivalent to: + // $(context).find(expr) + } else { + return this.constructor(context).find(selector); + } + + // HANDLE: $(DOMElement) + } else if (selector.nodeType) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if (jQuery.isFunction(selector)) { + return typeof root.ready !== "undefined" ? root.ready(selector) : + + // Execute immediately if ready is not present + selector(jQuery); + } + + if (selector.selector !== undefined) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray(selector, this); + }; + + // Give the init function the jQuery prototype for later + // instantiation + init.prototype = jQuery.fn; + + // Initialize central reference + rootjQuery = jQuery(document); + + var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // methods guaranteed to produce a unique set when starting + // from a unique set + guaranteedUnique = { + children : true, + contents : true, + next : true, + prev : true + }; + + jQuery.fn.extend({ + has : function(target) { + var i, targets = jQuery(target, this), len = targets.length; + + return this.filter(function() { + for (i = 0; i < len; i++) { + if (jQuery.contains(this, targets[i])) { + return true; + } + } + }); + }, + + closest : function(selectors, context) { + var cur, i = 0, l = this.length, matched = [], pos = rneedsContext.test(selectors) + || typeof selectors !== "string" ? jQuery(selectors, context || this.context) : 0; + + for (; i < l; i++) { + for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) { + + // Always skip document fragments + if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 : + + // Don't pass + // non-elements to + // Sizzle + cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) { + + matched.push(cur); + break; + } + } + } + + return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched); + }, + + // Determine the position of an element within + // the matched set of elements + index : function(elem) { + + // No argument, return index in parent + if (!elem) { + return (this[0] && this[0].parentNode) ? this.first().prevAll().length : -1; + } + + // index in selector + if (typeof elem === "string") { + return jQuery.inArray(this[0], jQuery(elem)); + } + + // Locate the position of the desired + // element + return jQuery.inArray( + + // If it receives a jQuery object, the first + // element is used + elem.jquery ? elem[0] : elem, this); + }, + + add : function(selector, context) { + return this.pushStack(jQuery + .uniqueSort(jQuery.merge(this.get(), jQuery(selector, context)))); + }, + + addBack : function(selector) { + return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector)); + } + }); + + function sibling(cur, dir) { + do { + cur = cur[dir]; + } while (cur && cur.nodeType !== 1); + + return cur; + } + + jQuery.each({ + parent : function(elem) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents : function(elem) { + return dir(elem, "parentNode"); + }, + parentsUntil : function(elem, i, until) { + return dir(elem, "parentNode", until); + }, + next : function(elem) { + return sibling(elem, "nextSibling"); + }, + prev : function(elem) { + return sibling(elem, "previousSibling"); + }, + nextAll : function(elem) { + return dir(elem, "nextSibling"); + }, + prevAll : function(elem) { + return dir(elem, "previousSibling"); + }, + nextUntil : function(elem, i, until) { + return dir(elem, "nextSibling", until); + }, + prevUntil : function(elem, i, until) { + return dir(elem, "previousSibling", until); + }, + siblings : function(elem) { + return siblings((elem.parentNode || {}).firstChild, elem); + }, + children : function(elem) { + return siblings(elem.firstChild); + }, + contents : function(elem) { + return jQuery.nodeName(elem, "iframe") ? elem.contentDocument + || elem.contentWindow.document : jQuery.merge([], elem.childNodes); + } + }, function(name, fn) { + jQuery.fn[name] = function(until, selector) { + var ret = jQuery.map(this, fn, until); + + if (name.slice(-5) !== "Until") { + selector = until; + } + + if (selector && typeof selector === "string") { + ret = jQuery.filter(selector, ret); + } + + if (this.length > 1) { + + // Remove duplicates + if (!guaranteedUnique[name]) { + ret = jQuery.uniqueSort(ret); + } + + // Reverse order for parents* + // and prev-derivatives + if (rparentsprev.test(name)) { + ret = ret.reverse(); + } + } + + return this.pushStack(ret); + }; + }); + var rnotwhite = (/\S+/g); + + // Convert String-formatted options into Object-formatted + // ones + function createOptions(options) { + var object = {}; + jQuery.each(options.match(rnotwhite) || [], function(_, flag) { + object[flag] = true; + }); + return object; + } + + /* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that + * will change how the callback list behaves or a more + * traditional option object + * + * By default a callback list will act like an event + * callback list and can be "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired + * once (like a Deferred) + * + * memory: will keep track of previous values and will call + * any callback added after the list has been fired right + * away with the latest "memorized" values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no + * duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns + * false + * + */ + jQuery.Callbacks = function(options) { + + // Convert options from String-formatted to + // Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? createOptions(options) : jQuery.extend({}, options); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by + // add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime + // changes + fired = firing = true; + for (; queue.length; firingIndex = -1) { + memory = queue.shift(); + while (++firingIndex < list.length) { + + // Run callback and check for early + // termination + if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) { + + // Jump to end and forget the data so + // .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if (!options.memory) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if (locked) { + + // Keep an empty list if we have data for future + // add calls + if (memory) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to + // the list + add : function() { + if (list) { + + // If we have memory from a past run, we + // should fire after adding + if (memory && !firing) { + firingIndex = list.length - 1; + queue.push(memory); + } + + (function add(args) { + jQuery.each(args, function(_, arg) { + if (jQuery.isFunction(arg)) { + if (!options.unique || !self.has(arg)) { + list.push(arg); + } + } else if (arg && arg.length && jQuery.type(arg) !== "string") { + + // Inspect + // recursively + add(arg); + } + }); + })(arguments); + + if (memory && !firing) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove : function() { + jQuery.each(arguments, function(_, arg) { + var index; + while ((index = jQuery.inArray(arg, list, index)) > -1) { + list.splice(index, 1); + + // Handle firing indexes + if (index <= firingIndex) { + firingIndex--; + } + } + }); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not + // list has callbacks attached. + has : function(fn) { + return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0; + }, + + // Remove all callbacks from the list + empty : function() { + if (list) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable : function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled : function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it + // would have no effect) + // Abort any pending executions + lock : function() { + locked = true; + if (!memory) { + self.disable(); + } + return this; + }, + locked : function() { + return !!locked; + }, + + // Call all callbacks with the given context and + // arguments + fireWith : function(context, args) { + if (!locked) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push(args); + if (!firing) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire : function() { + self.fireWith(this, arguments); + return this; + }, + + // To know if the callbacks have already been called + // at least once + fired : function() { + return !!fired; + } + }; + + return self; + }; + + jQuery + .extend({ + + Deferred : function(func) { + var tuples = [ + + // action, add listener, listener + // list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] ], state = "pending", promise = { + state : function() { + return state; + }, + always : function() { + deferred.done(arguments).fail(arguments); + return this; + }, + then : function( /* + * fnDone, fnFail, + * fnProgress + */) { + var fns = arguments; + return jQuery.Deferred( + function(newDefer) { + jQuery.each(tuples, function(i, tuple) { + var fn = jQuery.isFunction(fns[i]) && fns[i]; + + // deferred[ + // done + // | + // fail + // | + // progress + // ] + // for + // forwarding + // actions + // to + // newDefer + deferred[tuple[1]](function() { + var returned = fn && fn.apply(this, arguments); + if (returned && jQuery.isFunction(returned.promise)) { + returned.promise().progress(newDefer.notify).done( + newDefer.resolve).fail(newDefer.reject); + } else { + newDefer[tuple[0] + "With"]( + this === promise ? newDefer.promise() + : this, fn ? [ returned ] + : arguments); + } + }); + }); + fns = null; + }).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise + // aspect is added to the object + promise : function(obj) { + return obj != null ? jQuery.extend(obj, promise) : promise; + } + }, deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each(tuples, function(i, tuple) { + var list = tuple[2], stateString = tuple[3]; + + // promise[ done | fail + // | progress ] = + // list.add + promise[tuple[1]] = list.add; + + // Handle state + if (stateString) { + list.add(function() { + + // state + // = [ + // resolved + // | + // rejected + // ] + state = stateString; + + // [ + // reject_list + // | + // resolve_list + // ].disable; + // progress_list.lock + }, tuples[i ^ 1][2].disable, tuples[2][2].lock); + } + + // deferred[ resolve | + // reject | notify ] + deferred[tuple[0]] = function() { + deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments); + return this; + }; + deferred[tuple[0] + "With"] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise(deferred); + + // Call given func if any + if (func) { + func.call(deferred, deferred); + } + + // All done! + return deferred; + }, + + // Deferred helper + when : function(subordinate /* + * , ..., + * subordinateN + */) { + var i = 0, resolveValues = slice.call(arguments), length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || (subordinate && jQuery.isFunction(subordinate.promise)) ? length + : 0, + + // the master Deferred. + // If resolveValues consist of only a single + // Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and + // progress values + updateFunc = function(i, contexts, values) { + return function(value) { + contexts[i] = this; + values[i] = arguments.length > 1 ? slice.call(arguments) : value; + if (values === progressValues) { + deferred.notifyWith(contexts, values); + + } else if (!(--remaining)) { + deferred.resolveWith(contexts, values); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; + // treat others as resolved + if (length > 1) { + progressValues = new Array(length); + progressContexts = new Array(length); + resolveContexts = new Array(length); + for (; i < length; i++) { + if (resolveValues[i] && jQuery.isFunction(resolveValues[i].promise)) { + resolveValues[i].promise().progress( + updateFunc(i, progressContexts, progressValues)).done( + updateFunc(i, resolveContexts, resolveValues)).fail( + deferred.reject); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve + // the master + if (!remaining) { + deferred.resolveWith(resolveContexts, resolveValues); + } + + return deferred.promise(); + } + }); + + // The deferred used on DOM ready + var readyList; + + jQuery.fn.ready = function(fn) { + + // Add the callback + jQuery.ready.promise().done(fn); + + return this; + }; + + jQuery.extend({ + + // Is the DOM ready to be used? Set to true once it + // occurs. + isReady : false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait : 1, + + // Hold (or release) the ready event + holdReady : function(hold) { + if (hold) { + jQuery.readyWait++; + } else { + jQuery.ready(true); + } + }, + + // Handle when the DOM is ready + ready : function(wait) { + + // Abort if there are pending holds or we're already + // ready + if (wait === true ? --jQuery.readyWait : jQuery.isReady) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and + // wait if need be + if (wait !== true && --jQuery.readyWait > 0) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith(document, [ jQuery ]); + + // Trigger any bound ready events + if (jQuery.fn.triggerHandler) { + jQuery(document).triggerHandler("ready"); + jQuery(document).off("ready"); + } + } + }); + + /** + * Clean-up method for dom ready events + */ + function detach() { + if (document.addEventListener) { + document.removeEventListener("DOMContentLoaded", completed); + window.removeEventListener("load", completed); + + } else { + document.detachEvent("onreadystatechange", completed); + window.detachEvent("onload", completed); + } + } + + /** + * The ready event handler and self cleanup method + */ + function completed() { + + // readyState === "complete" is good enough for us to + // call the dom ready in oldIE + if (document.addEventListener || window.event.type === "load" + || document.readyState === "complete") { + + detach(); + jQuery.ready(); + } + } + + jQuery.ready.promise = function(obj) { + if (!readyList) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called + // after the browser event has already occurred. + // Support: IE6-10 + // Older IE sometimes signals "interactive" too soon + if (document.readyState === "complete" + || (document.readyState !== "loading" && !document.documentElement.doScroll)) { + + // Handle it asynchronously to allow scripts the + // opportunity to delay ready + window.setTimeout(jQuery.ready); + + // Standards-based browsers support + // DOMContentLoaded + } else if (document.addEventListener) { + + // Use the handy event callback + document.addEventListener("DOMContentLoaded", completed); + + // A fallback to window.onload, that will always + // work + window.addEventListener("load", completed); + + // If IE event model is used + } else { + + // Ensure firing before onload, maybe late but + // safe also for iframes + document.attachEvent("onreadystatechange", completed); + + // A fallback to window.onload, that will always + // work + window.attachEvent("onload", completed); + + // If IE and not a frame + // continually check to see if the document is + // ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch (e) { + } + + if (top && top.doScroll) { + (function doScrollCheck() { + if (!jQuery.isReady) { + + try { + + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch (e) { + return window.setTimeout(doScrollCheck, 50); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise(obj); + }; + + // Kick off the DOM ready check even if the user does not + jQuery.ready.promise(); + + // Support: IE<9 + // Iteration over object's inherited properties before its + // own + var i; + for (i in jQuery(support)) { + break; + } + support.ownFirst = i === "0"; + + // Note: most support tests are defined in their respective + // modules. + // false until the test is run + support.inlineBlockNeedsLayout = false; + + // Execute ASAP in case we need to set body.style.zoom + jQuery(function() { + + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName("body")[0]; + if (!body || !body.style) { + + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement("div"); + container = document.createElement("div"); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild(container).appendChild(div); + + if (typeof div.style.zoom !== "undefined") { + + // Support: IE<8 + // Check if natively block-level elements act like + // inline-block + // elements when setting their display to 'inline' + // and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if (val) { + + // Prevent IE 6 from affecting layout for + // positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 + // mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild(container); + }); + + (function() { + var div = document.createElement("div"); + + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch (e) { + support.deleteExpando = false; + } + + // Null elements to avoid leaks in IE. + div = null; + })(); + var acceptData = function(elem) { + var noData = jQuery.noData[(elem.nodeName + " ").toLowerCase()], nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it + // will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? false : + + // Nodes accept data unless otherwise specified; + // rejection can be conditional + !noData || noData !== true && elem.getAttribute("classid") === noData; + }; + + var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /([A-Z])/g; + + function dataAttr(elem, key, data) { + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if (data === undefined && elem.nodeType === 1) { + + var name = "data-" + key.replace(rmultiDash, "-$1").toLowerCase(); + + data = elem.getAttribute(name); + + if (typeof data === "string") { + try { + data = data === "true" ? true : data === "false" ? false : data === "null" ? null : + + // Only convert to a + // number if it + // doesn't change + // the string + +data + "" === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data; + } catch (e) { + } + + // Make sure we set the data so it isn't changed + // later + jQuery.data(elem, key, data); + + } else { + data = undefined; + } + } + + return data; + } + + // checks a cache object for emptiness + function isEmptyDataObject(obj) { + var name; + for (name in obj) { + + // if the public data object is empty, the private + // is still empty + if (name === "data" && jQuery.isEmptyObject(obj[name])) { + continue; + } + if (name !== "toJSON") { + return false; + } + } + + return true; + } + + function internalData(elem, name, data, pvt /* + * Internal Use + * Only + */) { + if (!acceptData(elem)) { + return; + } + + var ret, thisCache, internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects + // differently because IE6-7 + // can't GC object references properly across the DOM-JS + // boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS + // object data is + // attached directly to the object so GC can occur + // automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache + // already exists allows + // the code to shortcut on the same path as a DOM node + // with no cache + id = isNode ? elem[internalKey] : elem[internalKey] && internalKey; + + // Avoid doing any more work than we need to when trying + // to get data on an + // object that has no data at all + if ((!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined + && typeof name === "string") { + return; + } + + if (!id) { + + // Only DOM nodes need a new unique ID for each + // element since their data + // ends up in the global cache + if (isNode) { + id = elem[internalKey] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if (!cache[id]) { + + // Avoid exposing jQuery metadata on plain JS + // objects when the object + // is serialized using JSON.stringify + cache[id] = isNode ? {} : { + toJSON : jQuery.noop + }; + } + + // An object can be passed to jQuery.data instead of a + // key/value pair; this gets + // shallow copied over onto the existing cache + if (typeof name === "object" || typeof name === "function") { + if (pvt) { + cache[id] = jQuery.extend(cache[id], name); + } else { + cache[id].data = jQuery.extend(cache[id].data, name); + } + } + + thisCache = cache[id]; + + // jQuery data() is stored in a separate object inside + // the object's internal data + // cache in order to avoid key collisions between + // internal data and user-defined + // data. + if (!pvt) { + if (!thisCache.data) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if (data !== undefined) { + thisCache[jQuery.camelCase(name)] = data; + } + + // Check for both converted-to-camel and non-converted + // data property names + // If a data property was specified + if (typeof name === "string") { + + // First Try to find as-is property data + ret = thisCache[name]; + + // Test for null|undefined property data + if (ret == null) { + + // Try to find the camelCased property + ret = thisCache[jQuery.camelCase(name)]; + } + } else { + ret = thisCache; + } + + return ret; + } + + function internalRemoveData(elem, name, pvt) { + if (!acceptData(elem)) { + return; + } + + var thisCache, i, isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, id = isNode ? elem[jQuery.expando] : jQuery.expando; + + // If there is already no cache entry for this object, + // there is no + // purpose in continuing + if (!cache[id]) { + return; + } + + if (name) { + + thisCache = pvt ? cache[id] : cache[id].data; + + if (thisCache) { + + // Support array or space separated string names + // for data keys + if (!jQuery.isArray(name)) { + + // try the string as a key before any + // manipulation + if (name in thisCache) { + name = [ name ]; + } else { + + // split the camel cased version by + // spaces unless a key with the spaces + // exists + name = jQuery.camelCase(name); + if (name in thisCache) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + + // If "name" is an array of keys... + // When data is initially created, via + // ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key + // was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array + // argument path. + name = name.concat(jQuery.map(name, jQuery.camelCase)); + } + + i = name.length; + while (i--) { + delete thisCache[name[i]]; + } + + // If there is no data left in the cache, we + // want to continue + // and let the cache object itself get destroyed + if (pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache)) { + return; + } + } + } + + // See jQuery.data for more information + if (!pvt) { + delete cache[id].data; + + // Don't destroy the parent cache unless the + // internal data object + // had been the only thing left in it + if (!isEmptyDataObject(cache[id])) { + return; + } + } + + // Destroy the cache + if (isNode) { + jQuery.cleanData([ elem ], true); + + // Use delete when supported for expandos or `cache` + // is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if (support.deleteExpando || cache != cache.window) { + /* jshint eqeqeq: true */ + delete cache[id]; + + // When all else fails, undefined + } else { + cache[id] = undefined; + } + } + + jQuery.extend({ + cache : {}, + + // The following elements (space-suffixed to + // avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt + // to set expando properties + noData : { + "applet " : true, + "embed " : true, + + // ...but Flash objects (which have this + // classid) *can* handle expandos + "object " : "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData : function(elem) { + elem = elem.nodeType ? jQuery.cache[elem[jQuery.expando]] : elem[jQuery.expando]; + return !!elem && !isEmptyDataObject(elem); + }, + + data : function(elem, name, data) { + return internalData(elem, name, data); + }, + + removeData : function(elem, name) { + return internalRemoveData(elem, name); + }, + + // For internal use only. + _data : function(elem, name, data) { + return internalData(elem, name, data, true); + }, + + _removeData : function(elem, name) { + return internalRemoveData(elem, name, true); + } + }); + + jQuery.fn.extend({ + data : function(key, value) { + var i, name, data, elem = this[0], attrs = elem && elem.attributes; + + // Special expections of .data basically + // thwart jQuery.access, + // so implement the relevant behavior + // ourselves + + // Gets all values + if (key === undefined) { + if (this.length) { + data = jQuery.data(elem); + + if (elem.nodeType === 1 && !jQuery._data(elem, "parsedAttrs")) { + i = attrs.length; + while (i--) { + + // Support: IE11+ + // The attrs elements can be + // null (#14894) + if (attrs[i]) { + name = attrs[i].name; + if (name.indexOf("data-") === 0) { + name = jQuery.camelCase(name.slice(5)); + dataAttr(elem, name, data[name]); + } + } + } + jQuery._data(elem, "parsedAttrs", true); + } + } + + return data; + } + + // Sets multiple values + if (typeof key === "object") { + return this.each(function() { + jQuery.data(this, key); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data(this, key, value); + }) : + + // Gets one value + // Try to fetch any internally stored data + // first + elem ? dataAttr(elem, key, jQuery.data(elem, key)) : undefined; + }, + + removeData : function(key) { + return this.each(function() { + jQuery.removeData(this, key); + }); + } + }); + + jQuery + .extend({ + queue : function(elem, type, data) { + var queue; + + if (elem) { + type = (type || "fx") + "queue"; + queue = jQuery._data(elem, type); + + // Speed up dequeue by getting out + // quickly if this is just a lookup + if (data) { + if (!queue || jQuery.isArray(data)) { + queue = jQuery._data(elem, type, jQuery.makeArray(data)); + } else { + queue.push(data); + } + } + return queue || []; + } + }, + + dequeue : function(elem, type) { + type = type || "fx"; + + var queue = jQuery.queue(elem, type), startLength = queue.length, fn = queue + .shift(), hooks = jQuery._queueHooks(elem, type), next = function() { + jQuery.dequeue(elem, type); + }; + + // If the fx queue is dequeued, always + // remove the progress sentinel + if (fn === "inprogress") { + fn = queue.shift(); + startLength--; + } + + if (fn) { + + // Add a progress sentinel to prevent + // the fx queue from being + // automatically dequeued + if (type === "fx") { + queue.unshift("inprogress"); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call(elem, next, hooks); + } + + if (!startLength && hooks) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - + // generates a queueHooks object, + // or returns the current one + _queueHooks : function(elem, type) { + var key = type + "queueHooks"; + return jQuery._data(elem, key) || jQuery._data(elem, key, { + empty : jQuery.Callbacks("once memory").add(function() { + jQuery._removeData(elem, type + "queue"); + jQuery._removeData(elem, key); + }) + }); + } + }); + + jQuery.fn + .extend({ + queue : function(type, data) { + var setter = 2; + + if (typeof type !== "string") { + data = type; + type = "fx"; + setter--; + } + + if (arguments.length < setter) { + return jQuery.queue(this[0], type); + } + + return data === undefined ? this : this.each(function() { + var queue = jQuery.queue(this, type, data); + + // ensure a hooks for + // this queue + jQuery._queueHooks(this, type); + + if (type === "fx" && queue[0] !== "inprogress") { + jQuery.dequeue(this, type); + } + }); + }, + dequeue : function(type) { + return this.each(function() { + jQuery.dequeue(this, type); + }); + }, + clearQueue : function(type) { + return this.queue(type || "fx", []); + }, + + // Get a promise resolved when queues of a + // certain type + // are emptied (fx is the type by default) + promise : function(type, obj) { + var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { + if (!(--count)) { + defer.resolveWith(elements, [ elements ]); + } + }; + + if (typeof type !== "string") { + obj = type; + type = undefined; + } + type = type || "fx"; + + while (i--) { + tmp = jQuery._data(elements[i], type + "queueHooks"); + if (tmp && tmp.empty) { + count++; + tmp.empty.add(resolve); + } + } + resolve(); + return defer.promise(obj); + } + }); + + (function() { + var shrinkWrapBlocksVal; + + support.shrinkWrapBlocks = function() { + if (shrinkWrapBlocksVal != null) { + return shrinkWrapBlocksVal; + } + + // Will be changed later if needed. + shrinkWrapBlocksVal = false; + + // Minified: var b,c,d + var div, body, container; + + body = document.getElementsByTagName("body")[0]; + if (!body || !body.style) { + + // Test fired too early or in an unsupported + // environment, exit. + return; + } + + // Setup + div = document.createElement("div"); + container = document.createElement("div"); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild(container).appendChild(div); + + // Support: IE6 + // Check if elements with layout shrink-wrap their + // children + if (typeof div.style.zoom !== "undefined") { + + // Reset CSS: box-sizing; display; margin; + // border + div.style.cssText = + + // Support: Firefox<29, Android 2.3 + // Vendor-prefix box-sizing + "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + + "box-sizing:content-box;display:block;margin:0;border:0;" + + "padding:1px;width:1px;zoom:1"; + div.appendChild(document.createElement("div")).style.width = "5px"; + shrinkWrapBlocksVal = div.offsetWidth !== 3; + } + + body.removeChild(container); + + return shrinkWrapBlocksVal; + }; + + })(); + var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + + var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"); + + var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + + var isHidden = function(elem, el) { + + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css(elem, "display") === "none" || !jQuery.contains(elem.ownerDocument, elem); + }; + + function adjustCSS(elem, prop, valueParts, tween) { + var adjusted, scale = 1, maxIterations = 20, currentValue = tween ? function() { + return tween.cur(); + } : function() { + return jQuery.css(elem, prop, ""); + }, initial = currentValue(), unit = valueParts && valueParts[3] + || (jQuery.cssNumber[prop] ? "" : "px"), + + // Starting value computation is required for potential + // unit mismatches + initialInUnit = (jQuery.cssNumber[prop] || unit !== "px" && +initial) + && rcssNum.exec(jQuery.css(elem, prop)); + + if (initialInUnit && initialInUnit[3] !== unit) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[3]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting + // point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double + // until we get *something*. + // Use string for doubling so we don't + // accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style(elem, prop, initialInUnit + unit); + + // Update scale, tolerating zero or NaN from + // tween.cur() + // Break the loop if scale is unchanged or + // perfect, or if we've just had enough. + } while (scale !== (scale = currentValue() / initial) && scale !== 1 && --maxIterations); + } + + if (valueParts) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] + : +valueParts[2]; + if (tween) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; + } + + // Multifunctional method to get and set values of a + // collection + // The value/s can optionally be executed if it's a function + var access = function(elems, fn, key, value, chainable, emptyGet, raw) { + var i = 0, length = elems.length, bulk = key == null; + + // Sets many values + if (jQuery.type(key) === "object") { + chainable = true; + for (i in key) { + access(elems, fn, i, key[i], true, emptyGet, raw); + } + + // Sets one value + } else if (value !== undefined) { + chainable = true; + + if (!jQuery.isFunction(value)) { + raw = true; + } + + if (bulk) { + + // Bulk operations run against the entire set + if (raw) { + fn.call(elems, value); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function(elem, key, value) { + return bulk.call(jQuery(elem), value); + }; + } + } + + if (fn) { + for (; i < length; i++) { + fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key))); + } + } + } + + return chainable ? elems : + + // Gets + bulk ? fn.call(elems) : length ? fn(elems[0], key) : emptyGet; + }; + var rcheckableType = (/^(?:checkbox|radio)$/i); + + var rtagName = (/<([\w:-]+)/); + + var rscriptType = (/^$|\/(?:java|ecma)script/i); + + var rleadingWhitespace = (/^\s+/); + + var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + + "details|dialog|figcaption|figure|footer|header|hgroup|main|" + + "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; + + function createSafeFragment(document) { + var list = nodeNames.split("|"), safeFrag = document.createDocumentFragment(); + + if (safeFrag.createElement) { + while (list.length) { + safeFrag.createElement(list.pop()); + } + } + return safeFrag; + } + + (function() { + var div = document.createElement("div"), fragment = document.createDocumentFragment(), input = document + .createElement("input"); + + // Setup + div.innerHTML = "
    a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically + // inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName("tbody").length; + + // Make sure that link elements get serialized correctly + // by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName("link").length; + + // Makes sure cloning an html5 element does not cause + // problems + // Where outerHTML is undefined, this still works + support.html5Clone = document.createElement("nav").cloneNode(true).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its + // checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild(input); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is + // properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after + // the checked attribute + fragment.appendChild(div); + + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA + // (#14901) + input = document.createElement("input"); + input.setAttribute("type", "radio"); + input.setAttribute("checked", "checked"); + input.setAttribute("name", "t"); + + div.appendChild(input); + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android + // 2.3 + // old WebKit doesn't clone checked state correctly in + // fragments + support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; + + // Support: IE<9 + // Cloned elements keep attachEvent handlers, we use + // addEventListener on IE9+ + support.noCloneEvent = !!div.addEventListener; + + // Support: IE<9 + // Since attributes and properties are the same in IE, + // cleanData must set properties to undefined rather + // than use removeAttribute + div[jQuery.expando] = 1; + support.attributes = !div.getAttribute(jQuery.expando); + })(); + + // We have to close these tags to support XHTML (#13200) + var wrapMap = { + option : [ 1, "" ], + legend : [ 1, "
    ", "
    " ], + area : [ 1, "", "" ], + + // Support: IE8 + param : [ 1, "", "" ], + thead : [ 1, "", "
    " ], + tr : [ 2, "", "
    " ], + col : [ 2, "", "
    " ], + td : [ 3, "", "
    " ], + + // IE6-8 can't serialize link, script, style, or any + // html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters + // in front of it. + _default : support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
    ", "
    " ] + }; + + // Support: IE8-IE9 + wrapMap.optgroup = wrapMap.option; + + wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; + wrapMap.th = wrapMap.td; + + function getAll(context, tag) { + var elems, elem, i = 0, found = typeof context.getElementsByTagName !== "undefined" ? context + .getElementsByTagName(tag || "*") + : typeof context.querySelectorAll !== "undefined" ? context + .querySelectorAll(tag || "*") : undefined; + + if (!found) { + for (found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++) { + if (!tag || jQuery.nodeName(elem, tag)) { + found.push(elem); + } else { + jQuery.merge(found, getAll(elem, tag)); + } + } + } + + return tag === undefined || tag && jQuery.nodeName(context, tag) ? jQuery.merge([ context ], + found) : found; + } + + // Mark scripts as having already been evaluated + function setGlobalEval(elems, refElements) { + var elem, i = 0; + for (; (elem = elems[i]) != null; i++) { + jQuery + ._data(elem, "globalEval", !refElements + || jQuery._data(refElements[i], "globalEval")); + } + } + + var rhtml = /<|&#?\w+;/, rtbody = / from + // table fragments + if (!support.tbody) { + + // String was a , *may* have + // spurious + elem = tag === "table" && !rtbody.test(elem) ? tmp.firstChild : + + // String was a bare or + // + wrap[1] === "
    " && !rtbody.test(elem) ? tmp : 0; + + j = elem && elem.childNodes.length; + while (j--) { + if (jQuery.nodeName((tbody = elem.childNodes[j]), "tbody") + && !tbody.childNodes.length) { + + elem.removeChild(tbody); + } + } + } + + jQuery.merge(nodes, tmp.childNodes); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while (tmp.firstChild) { + tmp.removeChild(tmp.firstChild); + } + + // Remember the top-level container for + // proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if (tmp) { + safe.removeChild(tmp); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if (!support.appendChecked) { + jQuery.grep(getAll(nodes, "input"), fixDefaultChecked); + } + + i = 0; + while ((elem = nodes[i++])) { + + // Skip elements already in the context collection + // (trac-4087) + if (selection && jQuery.inArray(elem, selection) > -1) { + if (ignored) { + ignored.push(elem); + } + + continue; + } + + contains = jQuery.contains(elem.ownerDocument, elem); + + // Append to fragment + tmp = getAll(safe.appendChild(elem), "script"); + + // Preserve script evaluation history + if (contains) { + setGlobalEval(tmp); + } + + // Capture executables + if (scripts) { + j = 0; + while ((elem = tmp[j++])) { + if (rscriptType.test(elem.type || "")) { + scripts.push(elem); + } + } + } + } + + tmp = null; + + return safe; + } + + (function() { + var i, eventName, div = document.createElement("div"); + + // Support: IE<9 (lack submit/change bubble), Firefox + // (lack focus(in | out) events) + for (i in { + submit : true, + change : true, + focusin : true + }) { + eventName = "on" + i; + + if (!(support[i] = eventName in window)) { + + // Beware of CSP restrictions + // (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute(eventName, "t"); + support[i] = div.attributes[eventName].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; + })(); + + var rformElems = /^(?:input|select|textarea)$/i, rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + + function returnTrue() { + return true; + } + + function returnFalse() { + return false; + } + + // Support: IE9 + // See #13393 for more info + function safeActiveElement() { + try { + return document.activeElement; + } catch (err) { + } + } + + function on(elem, types, selector, data, fn, one) { + var origFn, type; + + // Types can be a map of types/handlers + if (typeof types === "object") { + + // ( types-Object, selector, data ) + if (typeof selector !== "string") { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for (type in types) { + on(elem, type, selector, data, types[type], one); + } + return elem; + } + + if (data == null && fn == null) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if (fn == null) { + if (typeof selector === "string") { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if (fn === false) { + fn = returnFalse; + } else if (!fn) { + return elem; + } + + if (one === 1) { + origFn = fn; + fn = function(event) { + + // Can use an empty set, since event contains + // the info + jQuery().off(event); + return origFn.apply(this, arguments); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || (origFn.guid = jQuery.guid++); + } + return elem.each(function() { + jQuery.event.add(this, types, fn, data, selector); + }); + } + + /* + * Helper functions for managing events -- not part of the + * public interface. Props to Dean Edwards' addEvent library + * for many of the ideas. + */ + jQuery.event = { + + global : {}, + + add : function(elem, types, handler, data, selector) { + var tmp, events, t, handleObjIn, special, eventHandle, handleObj, handlers, type, namespaces, origType, elemData = jQuery + ._data(elem); + + // Don't attach events to noData or text/comment + // nodes (but allow plain objects) + if (!elemData) { + return; + } + + // Caller can pass in an object of custom data in + // lieu of the handler + if (handler.handler) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used + // to find/remove it later + if (!handler.guid) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main + // handler, if this is the first + if (!(events = elemData.events)) { + events = elemData.events = {}; + } + if (!(eventHandle = elemData.handle)) { + eventHandle = elemData.handle = function(e) { + + // Discard the second event of a + // jQuery.event.trigger() and + // when an event is called after a page has + // unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.dispatch + .apply(eventHandle.elem, arguments) + : undefined; + }; + + // Add elem as a property of the handle fn to + // prevent a memory leak + // with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = (types || "").match(rnotwhite) || [ "" ]; + t = types.length; + while (t--) { + tmp = rtypenamespace.exec(types[t]) || []; + type = origType = tmp[1]; + namespaces = (tmp[2] || "").split(".").sort(); + + // There *must* be a type, no attaching + // namespace-only handlers + if (!type) { + continue; + } + + // If event changes its type, use the special + // event handlers for the changed type + special = jQuery.event.special[type] || {}; + + // If selector defined, determine special event + // api type, otherwise given type + type = (selector ? special.delegateType : special.bindType) || type; + + // Update special based on newly reset type + special = jQuery.event.special[type] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type : type, + origType : origType, + data : data, + handler : handler, + guid : handler.guid, + selector : selector, + needsContext : selector && jQuery.expr.match.needsContext.test(selector), + namespace : namespaces.join(".") + }, handleObjIn); + + // Init the event handler queue if we're the + // first + if (!(handlers = events[type])) { + handlers = events[type] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if + // the special events handler returns false + if (!special.setup + || special.setup.call(elem, data, namespaces, eventHandle) === false) { + + // Bind the global event handler to the + // element + if (elem.addEventListener) { + elem.addEventListener(type, eventHandle, false); + + } else if (elem.attachEvent) { + elem.attachEvent("on" + type, eventHandle); + } + } + } + + if (special.add) { + special.add.call(elem, handleObj); + + if (!handleObj.handler.guid) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates + // in front + if (selector) { + handlers.splice(handlers.delegateCount++, 0, handleObj); + } else { + handlers.push(handleObj); + } + + // Keep track of which events have ever been + // used, for event optimization + jQuery.event.global[type] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove : function(elem, types, handler, selector, mappedTypes) { + var j, handleObj, tmp, origCount, t, events, special, handlers, type, namespaces, origType, elemData = jQuery + .hasData(elem) + && jQuery._data(elem); + + if (!elemData || !(events = elemData.events)) { + return; + } + + // Once for each type.namespace in types; type may + // be omitted + types = (types || "").match(rnotwhite) || [ "" ]; + t = types.length; + while (t--) { + tmp = rtypenamespace.exec(types[t]) || []; + type = origType = tmp[1]; + namespaces = (tmp[2] || "").split(".").sort(); + + // Unbind all events (on this namespace, if + // provided) for the element + if (!type) { + for (type in events) { + jQuery.event.remove(elem, type + types[t], handler, selector, true); + } + continue; + } + + special = jQuery.event.special[type] || {}; + type = (selector ? special.delegateType : special.bindType) || type; + handlers = events[type] || []; + tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"); + + // Remove matching events + origCount = j = handlers.length; + while (j--) { + handleObj = handlers[j]; + + if ((mappedTypes || origType === handleObj.origType) + && (!handler || handler.guid === handleObj.guid) + && (!tmp || tmp.test(handleObj.namespace)) + && (!selector || selector === handleObj.selector || selector === "**" + && handleObj.selector)) { + handlers.splice(j, 1); + + if (handleObj.selector) { + handlers.delegateCount--; + } + if (special.remove) { + special.remove.call(elem, handleObj); + } + } + } + + // Remove generic event handler if we removed + // something and no more handlers exist + // (avoids potential for endless recursion + // during removal of special event handlers) + if (origCount && !handlers.length) { + if (!special.teardown + || special.teardown.call(elem, namespaces, elemData.handle) === false) { + + jQuery.removeEvent(elem, type, elemData.handle); + } + + delete events[type]; + } + } + + // Remove the expando if it's no longer used + if (jQuery.isEmptyObject(events)) { + delete elemData.handle; + + // removeData also checks for emptiness and + // clears the expando if empty + // so use it instead of delete + jQuery._removeData(elem, "events"); + } + }, + + trigger : function(event, data, elem, onlyHandlers) { + var handle, ontype, cur, bubbleType, special, tmp, i, eventPath = [ elem || document ], type = hasOwn + .call(event, "type") ? event.type : event, namespaces = hasOwn.call(event, + "namespace") ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if (elem.nodeType === 3 || elem.nodeType === 8) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're + // not firing them right now + if (rfocusMorph.test(type + jQuery.event.triggered)) { + return; + } + + if (type.indexOf(".") > -1) { + + // Namespaced trigger; create a regexp to match + // event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, + // or just an event type string + event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === "object" + && event); + + // Trigger bitmask: & 1 for native handlers; & 2 for + // jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + + // Clean up the event in case it is being reused + event.result = undefined; + if (!event.target) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, + // creating the handler arg list + data = data == null ? [ event ] : jQuery.makeArray(data, [ event ]); + + // Allow special events to draw outside the lines + special = jQuery.event.special[type] || {}; + if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) { + return; + } + + // Determine event propagation path in advance, per + // W3C events spec (#9951) + // Bubble up to document, then to window; watch for + // a global ownerDocument var (#9724) + if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) { + + bubbleType = special.delegateType || type; + if (!rfocusMorph.test(bubbleType + type)) { + cur = cur.parentNode; + } + for (; cur; cur = cur.parentNode) { + eventPath.push(cur); + tmp = cur; + } + + // Only add window if we got to document (e.g., + // not plain obj or detached DOM) + if (tmp === (elem.ownerDocument || document)) { + eventPath.push(tmp.defaultView || tmp.parentWindow || window); + } + } + + // Fire handlers on the event path + i = 0; + while ((cur = eventPath[i++]) && !event.isPropagationStopped()) { + + event.type = i > 1 ? bubbleType : special.bindType || type; + + // jQuery handler + handle = (jQuery._data(cur, "events") || {})[event.type] && jQuery._data(cur, "handle"); + + if (handle) { + handle.apply(cur, data); + } + + // Native handler + handle = ontype && cur[ontype]; + if (handle && handle.apply && acceptData(cur)) { + event.result = handle.apply(cur, data); + if (event.result === false) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if (!onlyHandlers && !event.isDefaultPrevented()) { + + if ((!special._default || special._default.apply(eventPath.pop(), data) === false) + && acceptData(elem)) { + + // Call a native DOM method on the target + // with the same name name as the event. + // Can't use an .isFunction() check here + // because IE6/7 fails that test. + // Don't do default actions on window, + // that's where global variables be (#6170) + if (ontype && elem[type] && !jQuery.isWindow(elem)) { + + // Don't re-trigger an onFOO event when + // we call its FOO() method + tmp = elem[ontype]; + + if (tmp) { + elem[ontype] = null; + } + + // Prevent re-triggering of the same + // event, since we already bubbled it + // above + jQuery.event.triggered = type; + try { + elem[type](); + } catch (e) { + + // IE<9 dies on focus/blur to hidden + // element (#1486,#12518) + // only reproducible on winXP IE8 + // native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if (tmp) { + elem[ontype] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch : function(event) { + + // Make a writable jQuery.Event from the native + // event object + event = jQuery.event.fix(event); + + var i, j, ret, matched, handleObj, handlerQueue = [], args = slice.call(arguments), handlers = (jQuery + ._data(this, "events") || {})[event.type] + || [], special = jQuery.event.special[event.type] || {}; + + // Use the fix-ed jQuery.Event rather than the + // (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, + // and let it bail if desired + if (special.preDispatch && special.preDispatch.call(this, event) === false) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call(this, event, handlers); + + // Run delegates first; they may want to stop + // propagation beneath us + i = 0; + while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) { + event.currentTarget = matched.elem; + + j = 0; + while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) { + + // Triggered event must either 1) have no + // namespace, or 2) have namespace(s) + // a subset or equal to those in the bound + // event (both can have no namespace). + if (!event.rnamespace || event.rnamespace.test(handleObj.namespace)) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler) + .apply(matched.elem, args); + + if (ret !== undefined) { + if ((event.result = ret) === false) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if (special.postDispatch) { + special.postDispatch.call(this, event); + } + + return event.result; + }, + + handlers : function(event, handlers) { + var i, matches, sel, handleObj, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; + + // Support (at least): Chrome, IE9 + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // + // Support: Firefox<=42+ + // Avoid non-left-click in FF but don't block IE + // radio events (#3861, gh-2343) + if (delegateCount && cur.nodeType + && (event.type !== "click" || isNaN(event.button) || event.button < 1)) { + + /* jshint eqeqeq: false */ + for (; cur != this; cur = cur.parentNode || this) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements + // (#6911, #8165, #11382, #11764) + if (cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click")) { + matches = []; + for (i = 0; i < delegateCount; i++) { + handleObj = handlers[i]; + + // Don't conflict with + // Object.prototype properties + // (#13203) + sel = handleObj.selector + " "; + + if (matches[sel] === undefined) { + matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 + : jQuery.find(sel, this, null, [ cur ]).length; + } + if (matches[sel]) { + matches.push(handleObj); + } + } + if (matches.length) { + handlerQueue.push({ + elem : cur, + handlers : matches + }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if (delegateCount < handlers.length) { + handlerQueue.push({ + elem : this, + handlers : handlers.slice(delegateCount) + }); + } + + return handlerQueue; + }, + + fix : function(event) { + if (event[jQuery.expando]) { + return event; + } + + // Create a writable copy of the event object and + // normalize some properties + var i, prop, copy, type = event.type, originalEvent = event, fixHook = this.fixHooks[type]; + + if (!fixHook) { + this.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent + .test(type) ? this.keyHooks : {}; + } + copy = fixHook.props ? this.props.concat(fixHook.props) : this.props; + + event = new jQuery.Event(originalEvent); + + i = copy.length; + while (i--) { + prop = copy[i]; + event[prop] = originalEvent[prop]; + } + + // Support: IE<9 + // Fix target property (#1925) + if (!event.target) { + event.target = originalEvent.srcElement || document; + } + + // Support: Safari 6-8+ + // Target should not be a text node (#504, #13143) + if (event.target.nodeType === 3) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's + // undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter(event, originalEvent) : event; + }, + + // Includes some event props shared by KeyEvent and + // MouseEvent + props : ("altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + + "metaKey relatedTarget shiftKey target timeStamp view which").split(" "), + + fixHooks : {}, + + keyHooks : { + props : "char charCode key keyCode".split(" "), + filter : function(event, original) { + + // Add which for key events + if (event.which == null) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks : { + props : ("button buttons clientX clientY fromElement offsetX offsetY " + + "pageX pageY screenX screenY toElement").split(" "), + filter : function(event, original) { + var body, eventDoc, doc, button = original.button, fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y + // available + if (event.pageX == null && original.clientX != null) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + + (doc && doc.scrollLeft || body && body.scrollLeft || 0) + - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = original.clientY + + (doc && doc.scrollTop || body && body.scrollTop || 0) + - (doc && doc.clientTop || body && body.clientTop || 0); + } + + // Add relatedTarget, if necessary + if (!event.relatedTarget && fromElement) { + event.relatedTarget = fromElement === event.target ? original.toElement + : fromElement; + } + + // Add which for click: 1 === left; 2 === + // middle; 3 === right + // Note: button is not normalized, so don't use + // it + if (!event.which && button !== undefined) { + event.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0))); + } + + return event; + } + }, + + special : { + load : { + + // Prevent triggered image.load events from + // bubbling to window.load + noBubble : true + }, + focus : { + + // Fire native event if possible so blur/focus + // sequence is correct + trigger : function() { + if (this !== safeActiveElement() && this.focus) { + try { + this.focus(); + return false; + } catch (e) { + + // Support: IE<9 + // If we error on focus to hidden + // element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType : "focusin" + }, + blur : { + trigger : function() { + if (this === safeActiveElement() && this.blur) { + this.blur(); + return false; + } + }, + delegateType : "focusout" + }, + click : { + + // For checkbox, fire native event so checked + // state will be right + trigger : function() { + if (jQuery.nodeName(this, "input") && this.type === "checkbox" && this.click) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire + // native .click() on links + _default : function(event) { + return jQuery.nodeName(event.target, "a"); + } + }, + + beforeunload : { + postDispatch : function(event) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue + // field is not set. + if (event.result !== undefined && event.originalEvent) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + // Piggyback on a donor event to simulate a different + // one + simulate : function(type, elem, event) { + var e = jQuery.extend(new jQuery.Event(), event, { + type : type, + isSimulated : true + + // Previously, `originalEvent: {}` was set here, so + // stopPropagation call + // would not be triggered on donor event, since in + // our own + // jQuery.event.stopPropagation function we had a + // check for existence of + // originalEvent.stopPropagation method, so, + // consequently it would be a noop. + // + // Guard for simulated events was moved to + // jQuery.event.stopPropagation function + // since `originalEvent` should point to the + // original event for the + // constancy with other events and for more focused + // logic + }); + + jQuery.event.trigger(e, null, elem); + + if (e.isDefaultPrevented()) { + event.preventDefault(); + } + } + }; + + jQuery.removeEvent = document.removeEventListener ? function(elem, type, handle) { + + // This "if" is needed for plain objects + if (elem.removeEventListener) { + elem.removeEventListener(type, handle); + } + } : function(elem, type, handle) { + var name = "on" + type; + + if (elem.detachEvent) { + + // #8545, #7054, preventing memory leaks for + // custom events in IE6-8 + // detachEvent needed property on element, + // by name of that event, + // to properly expose it to GC + if (typeof elem[name] === "undefined") { + elem[name] = null; + } + + elem.detachEvent(name, handle); + } + }; + + jQuery.Event = function(src, props) { + + // Allow instantiation without the 'new' keyword + if (!(this instanceof jQuery.Event)) { + return new jQuery.Event(src, props); + } + + // Event object + if (src && src.type) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been + // marked as prevented + // by a handler lower down the tree; reflect the + // correct value. + this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && + + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event + // object + if (props) { + jQuery.extend(this, props); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[jQuery.expando] = true; + }; + + // jQuery.Event is based on DOM3 Events as specified by the + // ECMAScript Language Binding + // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html + jQuery.Event.prototype = { + constructor : jQuery.Event, + isDefaultPrevented : returnFalse, + isPropagationStopped : returnFalse, + isImmediatePropagationStopped : returnFalse, + + preventDefault : function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if (!e) { + return; + } + + // If preventDefault exists, run it on the original + // event + if (e.preventDefault) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the + // original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation : function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if (!e || this.isSimulated) { + return; + } + + // If stopPropagation exists, run it on the original + // event + if (e.stopPropagation) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original + // event to true + e.cancelBubble = true; + }, + stopImmediatePropagation : function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if (e && e.stopImmediatePropagation) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } + }; + + // Create mouseenter/leave events using mouseover/out and + // event-time checks + // so that event delegation works in jQuery. + // Do the same for pointerenter/pointerleave and + // pointerover/pointerout + // + // Support: Safari 7 only + // Safari sends mouseenter too often; see: + // https://code.google.com/p/chromium/issues/detail?id=470258 + // for the description of the bug (it existed in older + // Chrome versions as well). + jQuery.each({ + mouseenter : "mouseover", + mouseleave : "mouseout", + pointerenter : "pointerover", + pointerleave : "pointerout" + }, function(orig, fix) { + jQuery.event.special[orig] = { + delegateType : fix, + bindType : fix, + + handle : function(event) { + var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; + + // For mouseenter/leave call the + // handler if related is outside + // the target. + // NB: No relatedTarget if the + // mouse left/entered the + // browser window + if (!related || (related !== target && !jQuery.contains(target, related))) { + event.type = handleObj.origType; + ret = handleObj.handler.apply(this, arguments); + event.type = fix; + } + return ret; + } + }; + }); + + // IE submit delegation + if (!support.submit) { + + jQuery.event.special.submit = { + setup : function() { + + // Only need this for delegated form submit + // events + if (jQuery.nodeName(this, "form")) { + return false; + } + + // Lazy-add a submit handler when a descendant + // form may potentially be submitted + jQuery.event.add(this, "click._submit keypress._submit", function(e) { + + // Node name check avoids a + // VML-related crash in IE + // (#9807) + var elem = e.target, form = jQuery.nodeName(elem, "input") + || jQuery.nodeName(elem, "button") ? + + // Support: IE <=8 + // We use jQuery.prop + // instead of elem.form + // to allow fixing the IE8 + // delegated submit issue + // (gh-2332) + // by 3rd party + // polyfills/workarounds. + jQuery.prop(elem, "form") : undefined; + + if (form && !jQuery._data(form, "submit")) { + jQuery.event.add(form, "submit._submit", function(event) { + event._submitBubble = true; + }); + jQuery._data(form, "submit", true); + } + }); + + // return undefined since we don't need an event + // listener + }, + + postDispatch : function(event) { + + // If form was submitted by the user, bubble the + // event up the tree + if (event._submitBubble) { + delete event._submitBubble; + if (this.parentNode && !event.isTrigger) { + jQuery.event.simulate("submit", this.parentNode, event); + } + } + }, + + teardown : function() { + + // Only need this for delegated form submit + // events + if (jQuery.nodeName(this, "form")) { + return false; + } + + // Remove delegated handlers; cleanData + // eventually reaps submit handlers attached + // above + jQuery.event.remove(this, "._submit"); + } + }; + } + + // IE change delegation and checkbox/radio fix + if (!support.change) { + + jQuery.event.special.change = { + + setup : function() { + + if (rformElems.test(this.nodeName)) { + + // IE doesn't fire change on a check/radio + // until blur; trigger it on click + // after a propertychange. Eat the + // blur-change in special.change.handle. + // This still fires onchange a second time + // for check/radio after blur. + if (this.type === "checkbox" || this.type === "radio") { + jQuery.event.add(this, "propertychange._change", function(event) { + if (event.originalEvent.propertyName === "checked") { + this._justChanged = true; + } + }); + jQuery.event.add(this, "click._change", function(event) { + if (this._justChanged && !event.isTrigger) { + this._justChanged = false; + } + + // Allow triggered, + // simulated change + // events (#11500) + jQuery.event.simulate("change", this, event); + }); + } + return false; + } + + // Delegated event; lazy-add a change handler on + // descendant inputs + jQuery.event.add(this, "beforeactivate._change", function(e) { + var elem = e.target; + + if (rformElems.test(elem.nodeName) && !jQuery._data(elem, "change")) { + jQuery.event.add(elem, "change._change", function(event) { + if (this.parentNode && !event.isSimulated && !event.isTrigger) { + jQuery.event.simulate("change", this.parentNode, event); + } + }); + jQuery._data(elem, "change", true); + } + }); + }, + + handle : function(event) { + var elem = event.target; + + // Swallow native change events from + // checkbox/radio, we already triggered them + // above + if (this !== elem || event.isSimulated || event.isTrigger + || (elem.type !== "radio" && elem.type !== "checkbox")) { + + return event.handleObj.handler.apply(this, arguments); + } + }, + + teardown : function() { + jQuery.event.remove(this, "._change"); + + return !rformElems.test(this.nodeName); + } + }; + } + + // Support: Firefox + // Firefox doesn't have focus(in | out) events + // Related ticket - + // https://bugzilla.mozilla.org/show_bug.cgi?id=687787 + // + // Support: Chrome, Safari + // focus(in | out) events fire after focus & blur events, + // which is spec violation - + // http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order + // Related ticket - + // https://code.google.com/p/chromium/issues/detail?id=449857 + if (!support.focusin) { + jQuery.each({ + focus : "focusin", + blur : "focusout" + }, function(orig, fix) { + + // Attach a single capturing handler on the + // document while someone wants + // focusin/focusout + var handler = function(event) { + jQuery.event.simulate(fix, event.target, jQuery.event.fix(event)); + }; + + jQuery.event.special[fix] = { + setup : function() { + var doc = this.ownerDocument || this, attaches = jQuery._data(doc, fix); + + if (!attaches) { + doc.addEventListener(orig, handler, true); + } + jQuery._data(doc, fix, (attaches || 0) + 1); + }, + teardown : function() { + var doc = this.ownerDocument || this, attaches = jQuery._data(doc, fix) - 1; + + if (!attaches) { + doc.removeEventListener(orig, handler, true); + jQuery._removeData(doc, fix); + } else { + jQuery._data(doc, fix, attaches); + } + } + }; + }); + } + + jQuery.fn.extend({ + + on : function(types, selector, data, fn) { + return on(this, types, selector, data, fn); + }, + one : function(types, selector, data, fn) { + return on(this, types, selector, data, fn, 1); + }, + off : function(types, selector, fn) { + var handleObj, type; + if (types && types.preventDefault && types.handleObj) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery(types.delegateTarget).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace + : handleObj.origType, handleObj.selector, handleObj.handler); + return this; + } + if (typeof types === "object") { + + // ( types-object [, selector] ) + for (type in types) { + this.off(type, selector, types[type]); + } + return this; + } + if (selector === false || typeof selector === "function") { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if (fn === false) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove(this, types, fn, selector); + }); + }, + + trigger : function(type, data) { + return this.each(function() { + jQuery.event.trigger(type, data, this); + }); + }, + triggerHandler : function(type, data) { + var elem = this[0]; + if (elem) { + return jQuery.event.trigger(type, data, elem, true); + } + } + }); + + var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, rnoshimcache = new RegExp("<(?:" + nodeNames + + ")[\\s/>]", "i"), rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + + // Support: IE 10-11, Edge 10240+ + // In IE/Edge using regex groups here causes severe + // slowdowns. + // See + // https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g, safeFragment = createSafeFragment(document), fragmentDiv = safeFragment + .appendChild(document.createElement("div")); + + // Support: IE<8 + // Manipulating tables requires a tbody + function manipulationTarget(elem, content) { + return jQuery.nodeName(elem, "table") + && jQuery.nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr") ? + + elem.getElementsByTagName("tbody")[0] + || elem.appendChild(elem.ownerDocument.createElement("tbody")) : elem; + } + + // Replace/restore the type attribute of script elements for + // safe DOM manipulation + function disableScript(elem) { + elem.type = (jQuery.find.attr(elem, "type") !== null) + "/" + elem.type; + return elem; + } + function restoreScript(elem) { + var match = rscriptTypeMasked.exec(elem.type); + if (match) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; + } + + function cloneCopyEvent(src, dest) { + if (dest.nodeType !== 1 || !jQuery.hasData(src)) { + return; + } + + var type, i, l, oldData = jQuery._data(src), curData = jQuery._data(dest, oldData), events = oldData.events; + + if (events) { + delete curData.handle; + curData.events = {}; + + for (type in events) { + for (i = 0, l = events[type].length; i < l; i++) { + jQuery.event.add(dest, type, events[type][i]); + } + } + } + + // make the cloned public data object a copy from the + // original + if (curData.data) { + curData.data = jQuery.extend({}, curData.data); + } + } + + function fixCloneNodeIssues(src, dest) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if (dest.nodeType !== 1) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using + // cloneNode. + if (!support.noCloneEvent && dest[jQuery.expando]) { + data = jQuery._data(dest); + + for (e in data.events) { + jQuery.removeEvent(dest, e, data.handle); + } + + // Event data gets referenced instead of copied if + // the expando gets copied too + dest.removeAttribute(jQuery.expando); + } + + // IE blanks contents when cloning scripts, and tries to + // evaluate newly-set text + if (nodeName === "script" && dest.text !== src.text) { + disableScript(dest).text = src.text; + restoreScript(dest); + + // IE6-10 improperly clones children of object + // elements using classid. + // IE10 throws NoModificationAllowedError if parent + // is null, #12132. + } else if (nodeName === "object") { + if (dest.parentNode) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When + // cloning an object + // element in IE9, the outerHTML strategy above is + // not sufficient. + // If the src has innerHTML and the destination does + // not, + // copy the src.innerHTML into the dest.innerHTML. + // #10324 + if (support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML))) { + dest.innerHTML = src.innerHTML; + } + + } else if (nodeName === "input" && rcheckableType.test(src.type)) { + + // IE6-8 fails to persist the checked state of a + // cloned checkbox + // or radio button. Worse, IE6-7 fail to give the + // cloned element + // a checked appearance if the defaultChecked value + // isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value + // of a cloned + // checkbox/radio button to an empty string instead + // of "on" + if (dest.value !== src.value) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the + // default selected + // state when cloning options + } else if (nodeName === "option") { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the + // correct value when + // cloning other types of input fields + } else if (nodeName === "input" || nodeName === "textarea") { + dest.defaultValue = src.defaultValue; + } + } + + function domManip(collection, args, callback, ignored) { + + // Flatten any nested arrays + args = concat.apply([], args); + + var first, node, hasScripts, scripts, doc, fragment, i = 0, l = collection.length, iNoClone = l - 1, value = args[0], isFunction = jQuery + .isFunction(value); + + // We can't cloneNode fragments that contain checked, in + // WebKit + if (isFunction + || (l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value))) { + return collection.each(function(index) { + var self = collection.eq(index); + if (isFunction) { + args[0] = value.call(this, index, self.html()); + } + domManip(self, args, callback, ignored); + }); + } + + if (l) { + fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored); + first = fragment.firstChild; + + if (fragment.childNodes.length === 1) { + fragment = first; + } + + // Require either new content or an interest in + // ignored elements to invoke the callback + if (first || ignored) { + scripts = jQuery.map(getAll(fragment, "script"), disableScript); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain + // situations (#8070). + for (; i < l; i++) { + node = fragment; + + if (i !== iNoClone) { + node = jQuery.clone(node, true, true); + + // Keep references to cloned scripts for + // later restoration + if (hasScripts) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws + // on ancient WebKit + jQuery.merge(scripts, getAll(node, "script")); + } + } + + callback.call(collection[i], node, i); + } + + if (hasScripts) { + doc = scripts[scripts.length - 1].ownerDocument; + + // Reenable scripts + jQuery.map(scripts, restoreScript); + + // Evaluate executable scripts on first + // document insertion + for (i = 0; i < hasScripts; i++) { + node = scripts[i]; + if (rscriptType.test(node.type || "") && !jQuery._data(node, "globalEval") + && jQuery.contains(doc, node)) { + + if (node.src) { + + // Optional AJAX dependency, but + // won't run scripts if not + // present + if (jQuery._evalUrl) { + jQuery._evalUrl(node.src); + } + } else { + jQuery + .globalEval((node.text || node.textContent || node.innerHTML || "") + .replace(rcleanScript, "")); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return collection; + } + + function remove(elem, selector, keepData) { + var node, elems = selector ? jQuery.filter(selector, elem) : elem, i = 0; + + for (; (node = elems[i]) != null; i++) { + + if (!keepData && node.nodeType === 1) { + jQuery.cleanData(getAll(node)); + } + + if (node.parentNode) { + if (keepData && jQuery.contains(node.ownerDocument, node)) { + setGlobalEval(getAll(node, "script")); + } + node.parentNode.removeChild(node); + } + } + + return elem; + } + + jQuery + .extend({ + htmlPrefilter : function(html) { + return html.replace(rxhtmlTag, "<$1>"); + }, + + clone : function(elem, dataAndEvents, deepDataAndEvents) { + var destElements, node, clone, i, srcElements, inPage = jQuery.contains( + elem.ownerDocument, elem); + + if (support.html5Clone || jQuery.isXMLDoc(elem) + || !rnoshimcache.test("<" + elem.nodeName + ">")) { + + clone = elem.cloneNode(true); + + // IE<=8 does not properly clone + // detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild(clone = fragmentDiv.firstChild); + } + + if ((!support.noCloneEvent || !support.noCloneChecked) + && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) { + + // We eschew Sizzle here for performance + // reasons: + // http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll(clone); + srcElements = getAll(elem); + + // Fix all IE cloning issues + for (i = 0; (node = srcElements[i]) != null; ++i) { + + // Ensure that the destination node + // is not null; Fixes #9587 + if (destElements[i]) { + fixCloneNodeIssues(node, destElements[i]); + } + } + } + + // Copy the events from the original to the + // clone + if (dataAndEvents) { + if (deepDataAndEvents) { + srcElements = srcElements || getAll(elem); + destElements = destElements || getAll(clone); + + for (i = 0; (node = srcElements[i]) != null; i++) { + cloneCopyEvent(node, destElements[i]); + } + } else { + cloneCopyEvent(elem, clone); + } + } + + // Preserve script evaluation history + destElements = getAll(clone, "script"); + if (destElements.length > 0) { + setGlobalEval(destElements, !inPage && getAll(elem, "script")); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + cleanData : function(elems, /* internal */ + forceAcceptData) { + var elem, type, id, data, i = 0, internalKey = jQuery.expando, cache = jQuery.cache, attributes = support.attributes, special = jQuery.event.special; + + for (; (elem = elems[i]) != null; i++) { + if (forceAcceptData || acceptData(elem)) { + + id = elem[internalKey]; + data = id && cache[id]; + + if (data) { + if (data.events) { + for (type in data.events) { + if (special[type]) { + jQuery.event.remove(elem, type); + + // This is a + // shortcut to avoid + // jQuery.event.remove's + // overhead + } else { + jQuery.removeEvent(elem, type, data.handle); + } + } + } + + // Remove cache only if it was + // not already removed by + // jQuery.event.remove + if (cache[id]) { + + delete cache[id]; + + // Support: IE<9 + // IE does not allow us to + // delete expando properties + // from nodes + // IE creates expando + // attributes along with the + // property + // IE does not have a + // removeAttribute function + // on Document nodes + if (!attributes && typeof elem.removeAttribute !== "undefined") { + elem.removeAttribute(internalKey); + + // Webkit & Blink + // performance suffers + // when deleting + // properties + // from DOM nodes, so + // set to undefined + // instead + // https://code.google.com/p/chromium/issues/detail?id=378607 + } else { + elem[internalKey] = undefined; + } + + deletedIds.push(id); + } + } + } + } + } + }); + + jQuery.fn.extend({ + + // Keep domManip exposed until 3.0 (gh-2225) + domManip : domManip, + + detach : function(selector) { + return remove(this, selector, true); + }, + + remove : function(selector) { + return remove(this, selector); + }, + + text : function(value) { + return access(this, function(value) { + return value === undefined ? jQuery.text(this) : this.empty().append( + (this[0] && this[0].ownerDocument || document).createTextNode(value)); + }, null, value, arguments.length); + }, + + append : function() { + return domManip(this, arguments, function(elem) { + if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { + var target = manipulationTarget(this, elem); + target.appendChild(elem); + } + }); + }, + + prepend : function() { + return domManip(this, arguments, function(elem) { + if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { + var target = manipulationTarget(this, elem); + target.insertBefore(elem, target.firstChild); + } + }); + }, + + before : function() { + return domManip(this, arguments, function(elem) { + if (this.parentNode) { + this.parentNode.insertBefore(elem, this); + } + }); + }, + + after : function() { + return domManip(this, arguments, function(elem) { + if (this.parentNode) { + this.parentNode.insertBefore(elem, this.nextSibling); + } + }); + }, + + empty : function() { + var elem, i = 0; + + for (; (elem = this[i]) != null; i++) { + + // Remove element nodes and prevent + // memory leaks + if (elem.nodeType === 1) { + jQuery.cleanData(getAll(elem, false)); + } + + // Remove any remaining nodes + while (elem.firstChild) { + elem.removeChild(elem.firstChild); + } + + // If this is a select, ensure that it + // displays empty (#12336) + // Support: IE<9 + if (elem.options && jQuery.nodeName(elem, "select")) { + elem.options.length = 0; + } + } + + return this; + }, + + clone : function(dataAndEvents, deepDataAndEvents) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone(this, dataAndEvents, deepDataAndEvents); + }); + }, + + html : function(value) { + return access(this, function(value) { + var elem = this[0] || {}, i = 0, l = this.length; + + if (value === undefined) { + return elem.nodeType === 1 ? elem.innerHTML.replace(rinlinejQuery, "") : undefined; + } + + // See if we can take a shortcut + // and just use innerHTML + if (typeof value === "string" && !rnoInnerhtml.test(value) + && (support.htmlSerialize || !rnoshimcache.test(value)) + && (support.leadingWhitespace || !rleadingWhitespace.test(value)) + && !wrapMap[(rtagName.exec(value) || [ "", "" ])[1].toLowerCase()]) { + + value = jQuery.htmlPrefilter(value); + + try { + for (; i < l; i++) { + + // Remove element + // nodes and prevent + // memory leaks + elem = this[i] || {}; + if (elem.nodeType === 1) { + jQuery.cleanData(getAll(elem, false)); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML + // throws an exception, + // use the fallback + // method + } catch (e) { + } + } + + if (elem) { + this.empty().append(value); + } + }, null, value, arguments.length); + }, + + replaceWith : function() { + var ignored = []; + + // Make the changes, replacing each + // non-ignored context element with the new + // content + return domManip(this, arguments, function(elem) { + var parent = this.parentNode; + + if (jQuery.inArray(this, ignored) < 0) { + jQuery.cleanData(getAll(this)); + if (parent) { + parent.replaceChild(elem, this); + } + } + + // Force callback invocation + }, ignored); + } + }); + + jQuery.each({ + appendTo : "append", + prependTo : "prepend", + insertBefore : "before", + insertAfter : "after", + replaceAll : "replaceWith" + }, function(name, original) { + jQuery.fn[name] = function(selector) { + var elems, i = 0, ret = [], insert = jQuery(selector), last = insert.length - 1; + + for (; i <= last; i++) { + elems = i === last ? this : this.clone(true); + jQuery(insert[i])[original](elems); + + // Modern browsers can apply + // jQuery collections as arrays, + // but oldIE needs a .get() + push.apply(ret, elems.get()); + } + + return this.pushStack(ret); + }; + }); + + var iframe, elemdisplay = { + + // Support: Firefox + // We have to pre-define these values for FF (#10227) + HTML : "block", + BODY : "block" + }; + + /** + * Retrieve the actual display of a element + * + * @param {String} + * name nodeName of the element + * @param {Object} + * doc Document object + */ + + // Called only from within defaultDisplay + function actualDisplay(name, doc) { + var elem = jQuery(doc.createElement(name)).appendTo(doc.body), + + display = jQuery.css(elem[0], "display"); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the + // element + elem.detach(); + + return display; + } + + /** + * Try to determine the default display value of an element + * + * @param {String} + * nodeName + */ + function defaultDisplay(nodeName) { + var doc = document, display = elemdisplay[nodeName]; + + if (!display) { + display = actualDisplay(nodeName, doc); + + // If the simple way fails, read from inside an + // iframe + if (display === "none" || !display) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery("